考虑这个设置:
function makeObj(a){
this.foo = 'bar';
this.prototype = a;
}
b = makeObj(document.getElementById('foo'));
document.getElementById('bar').appendChild(b);
这会出错:
无法在层次结构中的指定点插入节点"代码:" 3
为什么这样?对象b
有一个有效元素作为其原型。难道它不起作用吗?
答案 0 :(得分:4)
这里有几个问题。
首先makeObj()
根本没有创建新对象。它只是一个函数调用,而this
函数调用可能是指window
个对象。您必须使用makeObj()
与new
运算符来实际创建新的javascript对象。
其次,您只能将DOM对象附加到DOM,而不是常规的javascript对象。
第三,只是将DOM对象分配给另一个对象的原型并不会使其他对象突然变成DOM对象。如果需要DOM对象,则需要使用createElement()
之类的东西或其他一种创建DOM对象的文档方法来创建DOM对象。
如果你能详细描述你真正想要完成的事情,我们可以进一步提出建议。