• prototype原型解析


    每个对象都有原型,

    prototype能够实现实例共享,节约使您有能力向对象添加属性和方法。

    <script type="text/javascript">
    
    function employee(name,job,born)
    {
    this.name=name;
    this.job=job;
    this.born=born;
    }
    
    var bill=new employee("Bill Gates","Engineer",1985);
    
    employee.prototype.salary=null;
    bill.salary=20000;
    
    document.write(bill.salary);
    
    </script>

    prototype可以封装私有的function,通过return的形式暴露出简单的使用名称,以达到public/private的效果
     Calculator.prototype = function () {
    add = function (x, y) {
    return x + y;
    },

    subtract = function (x, y) {
    return x - y;
    }
    return {
    add: add,
    subtract: subtract
    }
    } ();

    //alert((new Calculator()).add(11, 3));
    例二:

    var BaseCalculator = function() {
    this.decimalDigits = 2;
    };

    BaseCalculator.prototype = {
    add: function(x, y) {
    return x + y;
    },
    subtract: function(x, y) {
    return x - y;
    }
    };

    创建完上述代码以后,我们来开始:

    var Calculator = function () {
    //为每个实例都声明一个税收数字
    this.tax = 5;
    };

    Calculator.prototype = new BaseCalculator();
     

    Calculator的原型是指向到BaseCalculator的一个实例上,目的是让Calculator集成它的add(x,y)和subtract(x,y)这2个function,还有一点要说的是,由于它的原型是BaseCalculator的一个实例,所以不管你创建多少个Calculator对象实例,他们的原型指向的都是同一个实例。

    
    
    var calc = new Calculator();
    alert(calc.add(1, 1));
    //BaseCalculator 里声明的decimalDigits属性,在 Calculator里是可以访问到的
    alert(calc.decimalDigits);
    
    

    上面的代码,运行以后,我们可以看到因为Calculator的原型是指向BaseCalculator的实例上的,所以可以访问他的decimalDigits属性值,那如果我不想让Calculator访问BaseCalculator的构造函数里声明的属性值,那怎么办呢?这么办:

    
    
    var Calculator = function () {
    this.tax= 5;
    };

    Calculator.prototype = BaseCalculator.prototype;
    
    

    通过将BaseCalculator的原型赋给Calculator的原型,这样你在Calculator的实例上就访问不到那个decimalDigits值了,如果你访问如下代码,那将会提升出错。

    
    
    var calc = new Calculator();
    alert(calc.add(1, 1));
    alert(calc.decimalDigits);
     
  • 相关阅读:
    Drupal 7.23:函数drupal_alter()注释
    请为我们的冷漠付费
    使用Drush管理Drupal站点
    Getting and installing the PEAR package manager
    CKEditor和IMCE构建drupal编辑器
    Drupal资源
    【转】为drupal初学者准备的12个精品课程
    OFBIZ+ECLIPSE
    OFBIZ安装
    CentOS6.4 利用sendEmail发邮件
  • 原文地址:https://www.cnblogs.com/vivijiang/p/6148393.html
Copyright © 2020-2023  润新知