gpt4 book ai didi

函数内的 Javascript 'new' 关键字

转载 作者:行者123 更新时间:2023-11-30 12:09:37 26 4
gpt4 key购买 nike

var steve = function() {
this.test = new function() {
console.log('new thing');
}

this.test_not_repeating = function() {
console.log('not repeating');
}
};

steve.prototype.test = function() {
console.log('test');
};

for (var i = 0; i < 100; i++) {
var y = new steve();
}

为什么 new 关键字会强制对函数求值 X 次,而不使用 new 关键字则不会?我对 javascript 的基本理解是,如果您不将函数放在原型(prototype)上,无论是否使用 new 关键字,它都会被计算 X 次。

最佳答案

这个函数实际上被 new 运算符作为构造函数调用,将结果对象分配给 this.test:

this.test = new function() {
console.log('new thing');
}

此函数仅分配给 this.test_not_repeating,它从未被调用:

this.test_not_repeating = function() {
console.log('new thing');
}

请记住,使用 new 调用函数时不需要括号:

new Constructor;

// Identical to
new Constructor();
new function () {};

// Identical to
new function () {}();

关于函数内的 Javascript 'new' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34184119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com