-1

I write a simple html:

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

and this simple script on google chrome:

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

then the console print out the innerHTML and the object.

expending the object then find out the value of parentNode is null.

I know the parentNode is one of the properties of node object, but what inside this variable?

it's a pointer? sub-object? function?

if it's a sub-object, would it be wasting memory to storage an object inside another object as the member variable?

4

2 回答 2

3

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

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

在这种情况下,该.parentNode属性只是对HTMLBodyElement包含<div>.

更多信息:

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

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

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

于 2013-10-30T16:23:28.947 回答
1

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

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

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

于 2013-10-30T16:22:56.540 回答