为什么我不能通过将函数分配给另一个变量来克隆javascript函数?
E.g:
var $ = document.getElementById;
使用尝试:
typeof $; //--> "function"
$('nav'); //--> "TypeError: Illegal invocation"
我认为它只是复制函数,仍然可以调用。
有人可以解释为什么不呢?
答案 0 :(得分:4)
只需将document.getElementById
分配给变量,就会失去this === document
部分,而document
部分通常会将this
作为var $ = document.getElementById.bind(document);
的方法。为避免这种情况,请使用.bind()
显式设置函数使用的{{1}}上下文:
{{1}}