constructor

  • 是一个属性
  • 是默认的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()效果一样。

中文名叫构造器属性,也差不多吧。

构造器属性说白了还是某一个对象中的属性,它一定存在吗?

肯定不行,如果我们改变它所在的那个对象,它可能就被干掉了。

改变这个对象有哪些方式?就像我们买鞋一样,是重新买一双还是修补?

假如这双鞋里有非常牛的功能,那就是它能自动确认方向,就像个指南针一样。

最好是修补吧,没必要买一双就别买。

假如非要换一双,而且还要这个非常牛的功能,就重新把这个功能安装上去。

posted @ 2020-12-19 15:14  李逍遥701  阅读(529)  评论(0)    收藏  举报