构造函数原型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这个属性指回原来的构造函数。

      Student.prototype = {
        study: function() {
          console.log('在学习')
        },
        work: function() {
          console.log(在工作)
        }
      }
当使用对象的形式对prototype重新赋值。那么这时候的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又重新指回原来的构造函数了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM