• JavaScript实现类,有多种方法。




    方法一:构造方法。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. this.coding = function ()
    5. {
    6. alert('我正在写代码');
    7. }
    8. }

    9. var coder=new coder();
    10. alert(coder.name);
    11. coder.coding();
    复制代码
    方法二:工厂方法。
    1. function createCoderFactory(){
    2. var obj=new Object();
    3. obj.name = '小王';
    4. obj.job = '程序员';
    5. obj.coding = function (){
    6. alert('我正在写代码');
    7. };
    8. return obj;
    9. }
    10. var coder = createCoderFactory();
    11. alert(coder.name);
    12. coder.coding();
    复制代码
    但工厂方法和构造方法都有着一个相同的缺点,就是每创建一个实例,都会实例化该类的每个函数。

    方法三:原形链。
    1. function coder(){}
    2. coder.prototype.name = '小王';
    3. coder.prototype.job = '程序员';
    4. coder.prototype.coding = function(){
    5. alert('我正在写代码');
    6. };
    7. var coder = new coder();
    8. alert(coder.name);
    9. coder.coding();
    复制代码
    但原行链有个缺点就是它所有属性都共享,只要一个实例改变其他的都会跟着改变。如:
    1. var coder1 = new coder();
    2. var coder2 = new coder();
    3. alert(coder1.name); /*显示“小王”*/
    4. coder2.name = '老王';
    5. alert(coder1.name); /*示“老王”*/
    6. alert(coder2.name); /*这个也显示“老王”*/
    复制代码
    方法四:混合方式。

    以上三种都有着各自的缺点,所以我们要加以改进。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. }
    5. coder.prototype.coding = function(){
    6. alert('我正在写代码');
    7. };
    复制代码
    方法五:动态原链。

    要解决前三种的缺点,还有一种方法。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. if (typeof(coder._init) == 'undefined'){
    5. this.coding = function ()
    6. {
    7. alert('我正在写代码');
    8. };
    9. this._init = true;
    10. }
    11. }
  • 相关阅读:
    Python 的 IDLE 编辑器
    Android中如何在Eclipse中关联源代码?(图文)
    HTMl5的存储方式sessionStorage和localStorage详解
    HTML的 <u> 标签
    CSS巧妙实现分隔线的几种方法
    关于ajax跨域请求(cross Domain)
    JQuery中$.ajax()方法参数都有哪些?
    最优雅,高效的javascript字符串拼接
    深入学习JavaScript: apply 方法 详解(转)——非常好
    jQuery.ajax() 函数详解
  • 原文地址:https://www.cnblogs.com/zengwei/p/1700557.html
Copyright © 2020-2023  润新知