我想用更短的别名调用一些函数,以便最小化代码大小。
(function(){
var t = document.getElementById;
t('element-id');
})();
这段代码给出了Error: Could not convert JavaScript argument
。为什么呢?
答案 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);};