我是javascript的新手,根据我对javascript的了解,下面的问题应该返回1,但它返回"undefined".谁能告诉我为什么它不会返回1?
var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0]();
})(foo.bar);
Run Code Online (Sandbox Code Playgroud)
当您使用.运算符调用函数时,左侧的对象将.成为调用的上下文,即this.但是当你将你的函数作为参数传递给另一个函数时,你会丢失上下文,因为你直接调用它.如果要保留可以使用的上下文bind.
(function(){
return typeof arguments[0]();
})(foo.bar.bind(foo));
Run Code Online (Sandbox Code Playgroud)
而且,是的,你的函数实际上返回的是类型baz,而不是值本身.typeof如果你想看,删除1.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |