2012-01-07 81 views
1

考慮此設置:無法添加到DOM有一個元素爲原型的onbject

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

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

這給出了一個錯誤:

Node cannot be inserted at the specified point in the hierarchy" code: "3

爲什麼會這樣?對象b有一個有效的元素作爲其原型。它不應該有效嗎?

+0

儘管瀏覽器在JavaScript中提供了DOM的接口,但DOM *不是JavaScript。 – 2012-01-07 09:39:19

回答

4

這裏有幾個問題。

首先makeObj()根本沒有製造新的物體。這只是一個函數調用,並且該函數調用可能指的是window對象。您將不得不使用makeObj()new運算符實際創建一個新的JavaScript對象。其次,您只能將DOM對象附加到DOM,而不是常規的JavaScript對象。

第三,只是將DOM對象分配給另一個對象的原型不會使其他對象突然變成DOM對象。如果你想要一個DOM對象,你需要使用諸如createElement()之類的東西或者創建DOM對象的其他文檔方式之一來創建一個DOM對象。

如果您可以更詳細地描述您真正想要完成的內容,我們可以提供進一步的建議。

+0

甚至用'new'調用它,'this.prototype = a;'不會使'this'從'a'繼承。 – 2012-01-07 09:38:33