構造函數原型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