当c1.rand
被调用时,我不清楚解释器如何能够访问this.num
,因为尚未调用构造函数。是不是必须在rand中调用constructor()
才能设置this.num
的值?
class C {
constructor() {
this.num = Math.random();
}
rand() {
console.log( "Random: " + this.num );
}
}
var c1 = new C();
c1.rand(); // "Random: 0.4324299..." (any number from 0 to 1)
答案 0 :(得分:4)
创建对象时会立即调用构造函数,因此当您调用时:
var c1 = new C();
调用构造函数。名称构造函数来自使用,它立即被调用,因为它构造了对象。这意味着它初始化变量等 - 对象中必不可少的东西,this.num
在你的情况下。是的,它是声明类时对象创建的保留函数。
new
关键字表示'新实例',在新实例创建时,会调用构造函数。
答案 1 :(得分:3)
当调用c1.rand时,我不清楚解释器如何能够访问this.num,因为尚未调用构造函数。
是的,它有。在编写
时调用了构造函数var c1 = new C();
只有名为b / c构造函数的构造函数是一个特殊的关键字吗?
是的,如果class
定义了constructor
函数,则在使用new
关键字调用该类时会调用它。
constructor
属性也可以通过实例的原型访问。
var c1 = new C();
c1.constructor === C //=> true