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