所以可以用一个匿名构造函数来创建一个匿名对象:new function() { ... }
我甚至查不到相关的说法,只看到有一个 stackoverflow 问题: https://stackoverflow.com/questions/40096704/new-function-vs-new-function
然后,会发生什么事情呢,调用了 bind()函数绑定了 this 值的函数也可以用一个新的空对象去调用,本来连 apply 和 call 都无法更改 this 值的:
function test() {
console.log('调用 test()函数, this 值是:', this);
}
test = test.bind({ a: 1 });
test();
new test();
真的太容易混淆了吧:
typeof Function
'function'
typeof function() {}
'function'
typeof new Function
'function'
typeof new function() {}
'object'