zoukankan      html  css  js  c++  java
  • js中的constructor 和prototype

    参考 http://www.cnblogs.com/yupeng/archive/2012/04/06/2435386.html

    function a(c){
        this.b = c;
        this.d =function(){
            alert(this.b);
        }
    }
    var obj = new a('test');
    console.log(obj.constructor);//a的function
    console.log(a);
    

    结果都是

    function a(c){
        this.b = c;
        this.d =function(){
            alert(this.b);
        }
    } 

    function 里面包含了

      1. argumentsnull
      2. callernull
      3. length0
      4. name""
      5. prototypeObject
      6. __proto__function Empty() {}
      7. <function scope>
    1. __proto__

    prototype 包含了2个属性,一个是constructor ,另外一个是__proto__

    一个实例化的对象他的__proto__指向的是原始对象的prototype,所以constructor也过来了。

    obj.constructor===a 是true,obj instanceof  a 也是true。如下面所示。

    可以这么说因为 obj.constructor===a 所以 obj instanceof  a 

    a {b: "test", d: function}
        b: "test"
        d: function (){
        __proto__: a
                constructor: function a(c){
                __proto__: Object                    
    

      

     总结下,一个实例化的对象的constructor === 它的没有实例化的对象。

     在arale源码里面调用父类方法,如下,他用到了constructor,this应该是实例化后的对象。this总是指向调用方法的对象,作为方法调用,那么this就是指实例化的对象。

        // The created class constructor 创建一个类的构造函数
        function SubClass() {
          // Call the parent constructor.
          parent.apply(this, arguments)
    
          // Only call initialize in self constructor.
          if (this.constructor === SubClass && this.initialize) {
            this.initialize.apply(this, arguments)
          }
        }
    

     参考下:http://www.2cto.com/kf/201407/313470.html

  • 相关阅读:
    Salesforce PDF打印
    Salesforce Visualforce分页
    Salesforce 开发实践探索
    Salesforce 锁定记录
    Salesforce 通过代码实现权限共享
    Salesforce Aura开发 Component表单初解
    phpqrcode生成动态二维码简单实例
    PHP结合zyupload多功能图片上传实例
    PHP程序员的技术成长规划 第三阶段:高级阶段
    PHP程序员的技术成长规划 第二阶段:提高阶段
  • 原文地址:https://www.cnblogs.com/danghuijian/p/3838371.html
Copyright © 2011-2022 走看看