【发布时间】:2020-07-06 14:44:16
【问题描述】:
是否可以将以下代码(尤其是 new 关键字)分解为更简单的代码(以便我理解发生了什么)?:
function F() {
this.color = 'red';
this.printNumber = function printNumber() {
console.log(5);
};
}
let o = new F();
console.log(o);
这是我的尝试:
当我被告知 let o = new F(); 与 let o = F.call({}) 相同时,我以为我赢了.
新对象的构造函数属性设置是否非常重要?我知道这个构造函数将被视为一个方法,并且其中的this 将这个对象作为一个整体来引用。这让我认为new 的工作原理是:
- 立即创建一个将构造函数属性设置为构造函数的对象。
- 执行构造函数属性(一种方法),使新对象看起来像:
{
color: "red",
printNumber: printNumber,
constructor: F
//as it is an instance of the inbuilt Object constructor function, it has all the properties/methods of an object
}
【问题讨论】:
-
或者你可以使用 ES6 类:
Class F { color= "red"; printNumber() { console.log(this.color); } } -
如果此代码有效,并且您想查看代码,您应该查看Code Review 的帮助中心,看看它是否与主题相关。
-
@HereticMonkey 这个问题在 Code Review 上会偏离主题,因为它缺少上下文。以后推荐 Code Review 时请链接到帮助中心。采取,“这可能是代码审查的主题。请在发布之前检查if it is on-topic 和how to post a good question。”
-
@Peilonrayz 您的示例将在刻度线中提供更多帮助,以便可以复制和粘贴它。请注意,我确实说过要查看帮助中心,并且所有网站的帮助中心都位于 /help。
标签: javascript