我想创建自己的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 :(得分: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;
};
答案 1 :(得分:0)
我在代码方面取得了部分成功
var Obj = function(id) {
this.id = id;
this.__proto__ = document.getElementById(id);
};
但是当尝试在Firefox中读取/写入innerHTML时,它显示错误:
TypeError: 'innerHTML' getter called on an object that does not implement interface Element.
所以我猜浏览器DOM实现存在一些限制。