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

    定义和用法

    constructor 属性返回对创建此对象的 Date 函数的引用。

    语法

    object.constructor


    constructor属性不影响任何JavaScript的内部属性。instanceof检测对象的原型链,通常你是无法修改的(不过某些引擎通过私有的__proto__属性暴露出来)。
    constructor其实没有什么用处,只是JavaScript语言设计的历史遗留物。由于constructor属性是可以变更的,所以未必真的指向对象的构造函数,只是一个提示。不过,从编程习惯上,我们应该尽量让对象的constructor指向其构造函数,以维持这个惯例。
    举个例子
    var a,b;
    (function(){
      function A (arg1,arg2) {
        this.a = 1;
        this.b=2; 
      }
    
      A.prototype.log = function () {
        console.log(this.a);
      }
      a = new A();
      b = new A();
    })()
    a.log();
    // 1
    b.log();
    // 1
    

     通过以上代码我们可以得到两个对象,a,b,他们同为类A的实例。因为A在闭包里,所以现在我们是不能直接访问A的,那如果我想给类A增加新方法怎么办?

    // a.constructor.prototype 在chrome,firefox中可以通过 a.__proto__ 直接访问
    a.constructor.prototype.log2 = function () {
      console.log(this.b)
    }
    
    a.log2();
    // 2
    b.log2();
    // 2
    

      

    通过访问constructor就可以了。 或者我想知道a的构造函数有几个参数?

     a.constructor.length
    或者再复杂点,我想知道a的构造函数的参数名是什么(angular的依赖注入就是通过此方法实现的据说)
    a.constructor
     .toString()
     .match(/(.*)/)
     .pop().slice(1,-1)
     .split(',');
    // ["arg1", "arg2"]
    

     

    原文:https://segmentfault.com/q/1010000000347868 

  • 相关阅读:
    (八)shell 计算命令
    (七)shell内建命令
    (六)shell数组深入解析
    (五)shell字符串深入解析
    输出链表的倒数第K个值
    反转链表
    调整该数组中数字的顺序,奇数在前,偶数在后
    基类与派生类的对象调用
    printf以%d形式输出浮点数的问题
    数值的整数次方
  • 原文地址:https://www.cnblogs.com/zhangym118/p/6088408.html
Copyright © 2011-2022 走看看