美文网首页
原型对象的constructor属性的作用

原型对象的constructor属性的作用

作者: 星月西 | 来源:发表于2017-04-20 22:25 被阅读199次

    1.原型链继承

    最常用的原型链继承方式应该时组合继承,示例如下:

    function Person(name){
        this.name=name;
    }
    
    Person.prototype.show=function(){
        console.log(this.name);
    }
    
    function Student(name){
        Person.call(this,name);
    }
    
    Student.prototype=new Person();
    Student.prototype.constructor=Student;
    
    var student=new Student('jc');
    student.show();
    

    这里大部分资料都会推荐我们,在改写了子类的原型对象时,再将其constructor属性重置为其构造函数,但是不禁会有疑问,这个construtor属性有什么作用呢?

    2.为类添加新的方法

    当类的构造函数在内层作用域中,无法直接访问到时,可以通过其示例的constructor属性访问到其构造函数,就可以为其原型对象添加新的方法

    student.constructor.prototype.print=function(){
        console.log('red');
    }
    student.print();
    

    3.解析构造函数的参数名

    可以通过toString方法获取到构造函数的代码,并解析其参数

    var argu=student.constructor.toString().match(/\(.*\)/)[0].slice(1,-1).split(',');
    console.log(argu);
    

    或许angular的依赖注入,根据传入的参数判断出相应的服务也是用类似的思路实现的。

    PS:数组和字符串中的slice方法中,如果传入的参数为负,可以理解为倒数第几个元素,例如-1是指的倒数第一个元素。

    相关文章

      网友评论

          本文标题:原型对象的constructor属性的作用

          本文链接:https://www.haomeiwen.com/subject/jmhrzttx.html