2014-09-03 193 views
0

我想要的功能,這樣的庫(類似於jQuery是做)的JavaScript返回默認值

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 
    return{ 
    getHeight: function(){ 
     return myElement.style.height; 
    }, 
    getWidth: function(){ 
     return myElement.style.width; 
    } 
    } 
} 

我的問題是,我不知道怎麼回

myElement 

在默認情況下,如果沒有所謂的喜歡

myLib('myId').getHeight; // Returns Height 
myLib('myId')   // Is supposed to return the HTML-Element with id = 'myId' 
+0

你嘗試過什麼嗎? – fcalderan 2014-11-13 11:20:18

回答

0

其他功能創建特權方法返回私人myElement財產本身的價值

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 

    return{ 
    getHeight: function(){ 
     return myElement.style.height; 
    }, 
    getWidth: function(){ 
     return myElement.style.width; 
    }, 
    getElement: function() { 
     return myElement; 
    } 
    } 
} 

myLib('myId').getElement(); 
0

你想,可以通過添加你想要的元素對象的方法,簡單地實現什麼,

的Javascript可以輕鬆添加方法存在的對象,即使this指針也會指向綁定的對象。

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 
    myElement.getHeight: function(){ 
     return this.style.height; 
    } 
    myElement.getWidth: function(){ 
     return this.style.width; 
    } 
    return myElement; 
} 

注意:雖然它的工作原理,我不會推薦它。 您需要注意不要覆蓋現有的方法/字段,並且如果多個庫採用相同的方法,則可能會發生碰撞。

而這不是jQuery所做的事情:它們創建一個包裝對象。要從jQuery獲取元素,您需要使用[0],例如$('#myEl')[0]

+0

這是否回答您的問題?如果是這樣,您可以將問題標記爲已回答(點擊您選擇的答案旁邊的複選標記),如果不是的話,您可以提出後續問題,我們會解釋。 – Iftah 2014-09-08 08:34:38