我正在开发一种工具,该工具通过从用户选择的较小部分组装它来创建 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元素不可能做到这一点吗?
任何想法表示赞赏..