1

考虑这个设置:

function makeObj(a){
   this.foo = 'bar';
   this.prototype = a;
}

b = makeObj(document.getElementById('foo'));
document.getElementById('bar').appendChild(b);

这给出了一个错误:

无法在层次结构中的指定点插入节点”代码:“3

为什么这样?Objectb有一个有效的元素作为它的原型。它不应该起作用吗?

4

1 回答 1

4

这里有几个问题。

首先makeObj()根本没有制作新对象。它只是一个函数调用,并且this在该函数调用中可能指的是window对象。您必须使用makeObj()操作new符来实际创建一个新的 javascript 对象。

其次,您只能将 DOM 对象附加到 DOM,而不是常规的 javascript 对象。

第三,仅仅将一个 DOM 对象分配给另一个对象的原型并不会使另一个对象突然变成一个 DOM 对象。如果你想要一个 DOM 对象,你需要使用类似的东西createElement()或其他记录的创建 DOM 对象的方法之一来创建一个 DOM 对象。

如果你能描述更多关于你真正想要完成的事情,我们可以提供进一步的建议。

于 2012-01-07T09:36:41.937 回答