- 是一个属性
- 是默认的prototype对象的属性
- 值为构造函数
构造函数的实例对象,有一个隐藏的[[prototype]]属性,此属性从何而来?
在对象被创建出来的过程中,构造函数prototype常规属性指向一个对象,那个对象同样是实例对象[[prototype]]属性的值。
实例对象可以使用constructor属性。
1 function Rabbit() {} 2 // by default: 3 // Rabbit.prototype = { constructor: Rabbit } 4 5 let rabbit = new Rabbit(); // inherits from {constructor: Rabbit} 6 7 alert(rabbit.constructor == Rabbit); // true (from prototype)
考虑下构造函数,构造函数现在多了一个代言人constructor属性,它指向构造函数,本质上,使用constructor就是在使用构造函数。
1 function Rabbit(name) { 2 this.name = name; 3 alert(name); 4 } 5 6 let rabbit = new Rabbit("White Rabbit"); 7 8 let rabbit2 = new rabbit.constructor("Black Rabbit");
是啊,new Rabbit() 和new rabbit.constructor()效果一样。
中文名叫构造器属性,也差不多吧。
构造器属性说白了还是某一个对象中的属性,它一定存在吗?
肯定不行,如果我们改变它所在的那个对象,它可能就被干掉了。
改变这个对象有哪些方式?就像我们买鞋一样,是重新买一双还是修补?
假如这双鞋里有非常牛的功能,那就是它能自动确认方向,就像个指南针一样。
最好是修补吧,没必要买一双就别买。
假如非要换一双,而且还要这个非常牛的功能,就重新把这个功能安装上去。