在下面的测试代码中,我使用一个工厂函数以传统的方式实例化一个新对象,而不使用new关键字。它如预期的那样工作。
function testThis(x) {
let middleStep = {
firstNumber: x.firstNumber,
secondNumber: x.secondNumber
}
return middleStep;
}
let newObject = testThis({firstNumber: 'ONE', secondNumber: 'TWO'});
// new keyword not used
console.log(newObject.firstNumber);
在下一个示例中,我使用了相同的方法,但包含了new关键字。它产生同样的输出,表面上似乎也是如此。new关键字在此上下文中使用时是否会更改任何内容,或者结果是否相同?
function testThis(x) {
let middleStep = {
firstNumber: x.firstNumber,
secondNumber: x.secondNumber
}
return middleStep;
}
let newObject = new testThis({firstNumber: 'ONE', secondNumber: 'TWO'});
// new keyword included
console.log(newObject.firstNumber);
发布于 2018-05-09 01:33:19
如果函数返回一个对象,用new调用它将是多余的,相当于在没有new的情况下调用它。来自MDN
执行代码
new Foo(...)时,会发生以下情况:
Foo.prototype继承。Foo,并将其绑定到新创建的对象。新Foo等价于new Foo(),即如果未指定参数列表,则调用Foo时不带参数。发布于 2018-05-09 01:24:43
“‘new”将创建一个函数对象。当您只调用一个函数时,“此”将被引用到该窗口。但如果是“新”对象,则“this”指的是对象本身。
发布于 2018-05-09 01:38:10
我提供了一些关于在java脚本中使用"new“和”function“的一般信息。
https://stackoverflow.com/questions/50244169
复制相似问题