.parentNode到底是什么

what exactly the .parentNode is?

本文关键字:是什么 parentNode      更新时间:2023-09-26

>我写一个简单的html:

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

谷歌浏览器上的这个简单脚本:

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

然后控制台打印出内部 HTML 和对象。

展开对象,然后找出 parentNode 的值为空。

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

这是一个指针?子对象?函数?

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

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 的指针,但它们是完全不透明的 - 您无法获得引用的任何有意义的。 但是,您可以使用 === 运算符比较引用,以查看两个引用是否实际引用同一对象。

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

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

JavaScript没有

"指针"或"子对象"的概念。

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

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