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