什么是.parentNode?

时间:2013-10-30 16:20:12

标签: javascript dom

我写了一个简单的html:

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

和google chrome上的这个简单脚本:

var div = document.querySelector('div');
console.log(div.parentNode.innerHTML);
console.log("%O",div);
然后控制台打印出innerHTML和对象。

消耗对象,然后找出parentNode的值为null。

我知道parentNode是node对象的一个​​属性,但是这个变量里面有什么?

它是一个指针?子对象?功能

如果它是一个子对象,是否会浪费内存将另一个对象内的对象存储为成员变量?

2 个答案:

答案 0 :(得分:3)

JavaScript没有“指针”或“子对象”。每个“对象”变量(或属性)都被视为对象的引用

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

在这种情况下,.parentNode属性仅仅是对包含HTMLBodyElement的{​​{1}}对象的引用。

更多信息:

这些引用有点像C的指针,但它们完全不透明 - 您无法获得引用的任何有意义的。但是,您可以使用<div>运算符比较引用,以查看两个引用是否实际引用了同一个对象。

每个对象都是引用计数 - 如果没有更多引用(即没有范围内的变量或属性指向它),那么该对象可能是垃圾收集

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

答案 1 :(得分:1)

JavaScript没有“指针”或“子对象”的概念。

parentNode的值是表示DOM节点的对象,该节点是设置该属性的对象的父节点(如果它有一个,如果没有,则它变为{{1}而不是)。

与JS中的所有对象值一样,这将作为参考处理。