0

何时c1.rand调用我不清楚解释器如何访问this.num,因为尚未调用构造函数。它不应该调用constructor()rand 来设置 的值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)
4

2 回答 2

4

创建对象时会立即调用构造函数,因此当您调用时:

var c1 = new C();

构造函数被调用。名称构造函数来自于使用,因为它构造了对象,所以立即被调用。这意味着它初始化变量等 -this.num在您的情况下对对象至关重要的东西。是的,它是声明类时创建对象的保留函数。

new关键字是“新实例”,在创建新实例时,会调用构造函数。

于 2016-08-31T21:38:27.693 回答
3

当调用 c1.rand 时,我不清楚解释器是如何访问 this.num 的,因为尚未调用构造函数。

是的,它有。您在编写时调用了构造函数

var c1 = new C();

只是构造函数称为 b/c 构造函数是特殊关键字吗?

是的,如果 a定义了class一个constructor函数,它将在您使用new关键字调用类时调用。

constructor属性也可以通过实例的原型访问。

var c1 = new C();
c1.constructor === C //=> true
于 2016-08-31T21:38:12.037 回答