【问题标题】:javascript: clone a function by assigning it to a variablejavascript:通过将函数分配给变量来克隆函数
【发布时间】:2013-04-17 21:37:40
【问题描述】:

为什么我不能通过将 javascript 中的函数分配给另一个变量来克隆它?

例如:

var $ = document.getElementById;


使用尝试:

typeof $;  //--> "function"
$('nav');  //--> "TypeError: Illegal invocation"


我认为它只会复制该功能,并且仍然可以调用。 谁能解释为什么不呢?

【问题讨论】:

    标签: javascript function object


    【解决方案1】:

    当只是将document.getElementById 分配给一个变量时,您会丢失this === document 部分,这是您在将其作为document 的方法调用时通常拥有的部分。为避免这种情况,请使用 .bind() 显式设置函数使用的 this 上下文:

    var $ = document.getElementById.bind(document);
    

    【讨论】:

    • bind() 兼容性有限,需要注意。
    • 它可以在每个浏览器中进行填充。我链接的 MDN 站点甚至为此提供了可复制和粘贴的代码。
    • 值得一提的是bind会返回一个新的函数(一个绑定的副本),而赋值给一个变量只是创建一个引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多