2013-12-03 91 views
4

我要創造我自己的DOM對象類型:如何正確委託對象?

var Obj = function(id) { 
    this.id = id; 
    this.constructor.prototype = document.getElementById(id); 
}; 

var x = new Obj("a_div"); //Success 
alert(x.type); //Successfully alert "div" 
x.innerHTML = "TEST"; //This does not update the actual div html on the page!!! 

我想任何函數調用該對象將被轉發到實際的DOM對象。我怎樣才能做到這一點?

+0

這似乎並沒有工作,你描述('div'不驚動)的方式: –

+0

你想擴展在div對象http://jsfiddle.net/y3Je3/1/?我不認爲你可以。 –

+0

@RocketHazmat我想委託它.. – texasbruce

回答

0

爲什麼不只是做這樣的事情:

var Obj = function(id) { 
    return document.getElementById(id); 
}; 

,你基本上走樣的getElementById到obj的速記符號。當然,你的x.type不能像預期的那樣工作,但我相信它可以被修復。

這裏你可以看到一個例子:http://jsfiddle.net/Nemesis02/HwxDL/

更新:

var Obj = function(id) { 
    var el = document.getElementById(id); 
    el.type = function() { 
     // do something here 
    } 
    return el; 
}; 
+0

因爲我想換更多的功能和數據來更新我的評論的對象 – texasbruce

+0

。 – Nemesis02

+0

這將宣告我每次創建對象時添加的功能.. – texasbruce

0

我有代碼部分的成功

var Obj = function(id) { 
    this.id = id; 
    this.__proto__ = document.getElementById(id); 
}; 

但是當嘗試讀/寫的innerHTML在Firefox中顯示錯誤:
TypeError: 'innerHTML' getter called on an object that does not implement interface Element. 所以我想有通過瀏覽器的DOM一些限制實現。