Javascript .parentNode到底是什么?

Javascript .parentNode到底是什么?,javascript,dom,Javascript,Dom,我编写了一个简单的html: <!DOCTYPE html> <html> <body> <div>Hi</div> </body> </html> 然后控制台打印出innerHTML和对象 扩展对象,然后发现parentNode的值为null 我知道parentNode是node对象的属性之一,但是这个变量里面有什么 是指针吗?子对象?功能 如果它是一个子对象,将一个对象存储在另一个对象中作为成员变量会

我编写了一个简单的html:

<!DOCTYPE html>
<html>
<body>
   <div>Hi</div>
</body>
</html>
然后控制台打印出innerHTML和对象

扩展对象,然后发现parentNode的值为null

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

是指针吗?子对象?功能


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

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

parentNode
的值是表示DOM节点的对象,该节点是设置属性的对象的父节点(如果有,如果没有,则改为
null

与JS中的所有对象值一样,这是作为引用处理的。

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

var a = 1;    // a contains the value "1"
var b = {};   // b contains a reference to the newly created empty object {}
在本例中,
.parentNode
属性仅是对包含
HTMLBodyElement
对象的引用

更多信息:

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

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


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

如果节点的父节点有父节点,则
父节点将是对该节点的引用;否则它将为空。根据您的示例,它指向
body
var a = 1;    // a contains the value "1"
var b = {};   // b contains a reference to the newly created empty object {}