我是javascript新手,根据我对javascript的了解,以下问题应返回1,但返回的是“ undefined”。谁能告诉我为什么它不返回1?
var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0]();
})(foo.bar);
当您使用.
运算符调用函数时,左侧的对象将.
成为调用的上下文,即this
。但是,当您将函数作为参数传递给另一个函数时,会丢失上下文,因为您直接调用它。如果要保留上下文,可以使用bind
。
(function(){
return typeof arguments[0]();
})(foo.bar.bind(foo));
而且,是的,您的函数实际上返回的类型baz
,而不是值本身。typeof
如果要查看,请删除1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句