2013-02-14 118 views
1

我想通过缩短别名来调用某些函数,以尽量减少代码大小。使用变量缩短函数名称

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

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

回答

4

当您将一个函数分配给一个不同的变量时,其值为this的值更改。由于getElementById预计this是一个元素,因此会出现错误。

如果你在一个环境中,你可以使用bind是,使用它:

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

这将确保tthis将保持document对象。


如果您不能使用bind,你必须创建一个中介的作用:

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

约瑟夫说,该this值的变化和它搅乱了功能。请尝试以下操作:

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