javascript - 为什么在新实例上调用方法?

标签 javascript ecmascript-6 this es6-class

当调用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)

最佳答案

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

var c1 = new C();

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

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

关于javascript - 为什么在新实例上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39259389/

相关文章:

javascript - 将 CSS 属性值与 Eclipse 中的字符串进行比较

JavaScript 可能存在内存泄漏

javascript 正则表达式 十进制

javascript - 使用转义的 html 字符 react 渲染变量

javascript - 如果从嵌套对象的方法中使用,如何使 "this"关键字引用当前实例?

java - 处理声音,库未正确安装

javascript - 通过检查 jQuery 元素更好地理解 Javascript

javascript - JS - 通过只选择你需要的来解构

javascript - 如何映射和过滤对象数组?

javascript - 如何(最好)在作为回调传递的对象方法中访问 'this'