[英]extending html elements in javascript
我正在开发一种工具,该工具可以通过根据用户选择的较小部分进行组装来创建GUI。 这些较小的部分是通过程序创建的html元素。
考虑到效率,我想知道这些元素是否可以像普通javascript对象一样共享原型。
这是我的扩展方法:
var extend = function(o){
var F = function(){};
F.prototype = o;
var x = new F();
x._proto_ = o;
return x;
};
与Object.create()相同,只是像Mozilla一样保留对原型的引用。
因此,这对于普通对象可以正常工作:
var a = { x: 0, y: 1};
var b = extend(a);
b.y; // 1
但是当我尝试将其用于实际的html元素时,它失败了:
var a = document.createElement("div");
a.whatever = //whatever..
var b = extend(a);
document.body.appendChild(b); //this throws an error.
错误显示为:“试图在不存在的上下文中引用节点。”
这是怎么回事? 用html元素不可能做到这一点吗?
任何想法都表示赞赏。
因为在extend
调用之后获得的b
不是DOM元素,所以它是一个对象,在原型中保留了对DOM元素的引用。
PS您确定需要x.prototype = o;
线在extend
功能?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.