繁体   English   中英

在javascript中扩展html元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM