2013-10-30 239 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的指针,但它们是完全不透明 - 你不能获得一个参考的任何有意义的。然而,你可以用比较引用使用===运算符来查看两个引用是否实际引用同一个对象。

每个对象都是引用计数 - 如果不存在更多的引用(即,没有在范围变量或特性指向它),则该对象可以是垃圾回收

当您将一个对象传递给某个函数时,您实际上正在传递一个参考副本。这意味着在函数内可以访问该对象的属性,并修改该对象,但不能修改调用者对该对象的引用。