2013-10-30 236 views
-1

我寫了一個簡單的HTML:.parentNode究竟是什麼?

<!DOCTYPE html> 
<html> 
<body> 
    <div>Hi</div> 
</body> 
</html> 

,並在谷歌瀏覽器這個簡單的腳本:

var div = document.querySelector('div'); 
console.log(div.parentNode.innerHTML); 
console.log("%O",div); 

則控制檯打印出來的innerHTML和對象。

擴大對象,然後找出parentNode的值爲null。

我知道parentNode是節點對象的屬性之一,但是在這個變量裏面呢?

這是一個指針?子對象?功能?

如果它是一個子對象,是否會浪費內存來將對象存儲在另一個對象中作爲成員變量?

+1

'parentNode'將是對節點父節點的引用,如果它有一個;否則它將爲空。按照你的例子,它指向'body' – Satpal

回答

0

JavaScript沒有「指針」或「子對象」的概念。

parentNode的值是表示DOM節點的對象,它是設置屬性的對象的父節點(如果它有一個,如果沒有,則它會變爲null)。

與JS中的所有對象一樣,這將作爲參考進行處理。

2

JavaScript沒有「指針」或「子對象」。每個「對象」變量(或屬性)都被隱藏地視爲對象的引用

var a = 1; // a contains the value "1" 
var b = {}; // b contains a reference to the newly created empty object {} 

在這種情況下,.parentNode屬性僅是到包含<div>HTMLBodyElement對象的引用。

更多信息:

這些提法有點像C的指針,但它們是完全不透明 - 你不能獲得一個參考的任何有意義的。然而,你可以用比較引用使用===運算符來查看兩個引用是否實際引用同一個對象。

每個對象都是引用計數 - 如果不存在更多的引用(即,沒有在範圍變量或特性指向它),則該對象可以是垃圾回收

當您將一個對象傳遞給某個函數時,您實際上正在傳遞一個參考副本。這意味着在函數內可以訪問該對象的屬性,並修改該對象,但不能修改調用者對該對象的引用。