我对JavaScript中的new关键字感到困惑。采取以下示例
function A (value) {
this.a = value;
}
function B (value) {
return new A (value);
}
console.log ( B (0)); // { a: 0 }
console.log (new B (0)); // { a: 0 }
我希望能够创建" A"的新实例。无需使用" new"。为此我有" B()"但是,当我打电话给"新B()"它似乎与" B()"做同样的事情,好像"新"被忽略了。在这两种情况下,instanceof等于" A"。到底是怎么回事?
答案 0 :(得分:5)
构造函数返回的对象成为结果 全新的表达。如果构造函数不起作用 显式返回一个对象,使用在步骤1中创建的对象 代替。 (通常情况下,施工人员不会返回值,但他们可以 如果他们想要覆盖正常的对象创建,请选择这样做 过程。)
此摘录显示
new B
做什么不是正常的" (没有理由这样做)B
new B
明确返回的值
如果你坚持new
的正常使用,你就不会感到困惑:传递一个普通的构造函数,这个函数除了简单地初始化它的上下文之外不会返回任何东西({ {1}})。