构造函数原型constructor

对象原型(__proto__)和构造函数原型对象(prototype)里面都有一个属性constructor,constructor我们称为构造函数,因为它指向的是构造函数本身。

constructor主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数。

下面这个例子可以说明:

      function Student(name, age) {         this.name = name         this.age = age       }       Student.prototype.study = function() {         console.log(this.name + '在学习')       }       var zs = new Student('张三', 18)       console.log(zs.__proto__.constructor)       console.log(Student.prototype.constructor)       console.log(zs.__proto__.constructor === Student.prototype.constructor) 构造函数原型constructor

 

 很多情况下,我们需要手动利用constructor这个属性指回原来的构造函数。

      Student.prototype = {         study: function() {           console.log('在学习')         },         work: function() {           console.log(在工作)         }       } 当使用对象的形式对prototype重新赋值。那么这时候的constructor指向的就不是原来的构造函数了,而是构造函数原型constructor
因为prototype被重写了,原本里面的constructor也就不存在了。 那么如何让constructor重新指回构造函数呢?在prototype里添加constructor:Student       Student.prototype = {   constructor:Student,         study: function() {           console.log('在学习')         },         work: function() {           console.log(在工作)         }       }    console.log(Student.prototype.constructor) 构造函数原型constructor

 

 这时候constructor又重新指回原来的构造函数了。

上一篇:TypeScript 命名空间-Namespace


下一篇:Java中创建对象的5种方法