在 Javascript 中,如果我们给函数起别名(或者,将“对函数的引用”分配给另一个变量),例如:
f = g;
f = obj.display;
obj.f = foo;
以上所有 3 行,只要右侧的功能/方法不接触,它们就可以工作this
?由于我们正在传递所有参数,因此它可能会搞砸的唯一方法是右边的函数/方法使用this
?
实际上,如果第 1 行g
也是window
? 如果g
是引用obj.display
,则存在同样的问题。
在第 2 行中,当obj.display
touches时this
,表示的是obj
,但是当f
被调用时,this
是window
,所以它们是不同的。
在第 3 行中,它是相同的:当在's 的代码中f
被调用时,则is ,而 while可能用于引用它是否是 的属性。(全局函数)。obj
this
obj
foo
this
window
window
所以第2行可以写成
f = function() { obj.display.apply(obj, arguments) }
第 3 行:
obj.f = function() { foo.apply(window, arguments) }
这是正确的方法吗?除此之外还有其他方法吗?