新函数返回新函数
New function returning new function
我对JavaScript中的新关键字有点困惑。以以下示例
为例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()",然而,当我调用"new B()"时,它似乎做了与"B()"相同的事情,好像"new"被忽略了。在这两种情况下,instanceof都等于"A"。到底发生了什么?
From MDN on new
:
构造函数返回的对象成为的结果全新的表达方式。如果构造函数没有显式返回一个对象,使用步骤1中创建的对象代替。(通常构造函数不返回值,但它们可以如果他们想要覆盖正常的对象创建,可以选择这样做过程。)
这个摘录显示
- 你用
new B
做的事情不是"正常的"(没有理由这样做) -
B
显式返回的值也由new B
返回
如果你坚持new
的正常使用,你不会感到困惑:传递给它一个普通的构造函数,这是一个函数,不返回任何东西,只是简单地初始化它的上下文(this
)。
相关文章:
- 函数()和新函数()之间的区别
- 返回一个新函数,而不是工厂中的对象
- 替换新函数中的 arguments.callee
- 将“e”传递给一个新函数 - javascript
- JavaScript新函数混淆
- NodeJS:undefined不是一个新函数'新'
- javascript onclick将onclick更改为新函数
- JavaScript可以根据用户输入创建一个新函数
- Jquery原型与新函数冲突
- 什么'新函数和函数之间的区别
- JavaScript新函数范围ReferenceError
- Javascript新函数构造函数没有't返回所需的值
- 如何在不创建新函数的情况下更改此函数中变量的值
- 向对象添加新函数
- 如何将新函数绑定到元素的 onclick 事件,并使其在所有其他绑定函数之前运行
- 用于初始化对象的编码模式 - 构造函数(新)与 Object.create()(Crockford)
- jQuery - 在事件上创建新函数
- 函数如何在 Javascript 中创建新函数
- 在另一个函数中使用变量,然后调用新函数
- IE7 新函数返回对象而不是函数