2013-02-14 113 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);};