var foo = { bar: function() { return this.baz; }, baz: 1}; (function(){ return typeof arguments[0](); })(foo.bar);
答案请往下翻
var foo = { bar: function() { return this.baz; }, baz: 1}; (function(){ return typeof arguments[0]();//"undefined" })(foo.bar);
这里你可能会误以为最终结果是number
。向函数中传递参数可以看作是一种赋值,所以arguments[0]
得到是是真正的bar
函数的值,而不是foo.bar
这个引用,那么自然this
也就不会指向foo
,而是window
了。