用变量缩短函数名称

时间:2013-02-14 03:39:01

标签: javascript

我想用更短的别名调用一些函数,以便最小化代码大小。

(function(){
    var t = document.getElementById;
    t('element-id');
})();

这段代码给出了Error: Could not convert JavaScript argument。为什么呢?

2 个答案:

答案 0 :(得分:4)

将函数分配给其他变量时,this值会发生变化。由于getElementById期望this成为元素,因此您会收到错误。

如果您所在的环境中可以使用bind,请使用它:

(function(){
    var t = document.getElementById.bind(document);
    t('element-id');
})();

这将确保t的{​​{1}}保留this个对象。


如果您无法使用document,则必须创建中间函数:

bind

答案 1 :(得分:2)

正如约瑟夫所说,this值会发生变化并且会使函数混乱。请尝试以下方法:

var t = function(i) {return document.getElementById(i);};