let anonymous = function () {
return 'hello'
};
let f = () => 'world';
console.log(new anonymous['__proto__'].constructor());
console.log(new f['__proto__'].constructor());
console.log(anonymous());
anonymous
当我尝试创建函数的新实例时,这两个函数都返回一个名称为is的函数。
我的问题:当我调用anonymous()
函数时,为什么它没有命中第二个构造函数(箭头函数)?
这两个函数的[[Prototype]]为Function.prototype
。从这个意义上说,函数表达式和箭头函数没有区别。
let anonymous = function () {
return 'hello'
};
let f = () => 'world';
console.log(Object.getPrototypeOf(anonymous) === Function.prototype); // true
console.log(Object.getPrototypeOf(f) === Function.prototype); // true
而且Function.prototype.constructor
是当然的Function
。
因此,您正在执行new Function()
,这将创建一个不执行任何操作的函数。之所以调用该无用的函数,是anonymous
因为它没有名称,但是它不是anonymous
变量中的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句