You*_*sam 2 html javascript dom
对象是相等的参考没有值.
var obj1 = {name: 'Yousef', age: 15},
obj2 = {name: 'Yousef', age: 15};
console.log(obj1 === obj2); // The Result will be false
Run Code Online (Sandbox Code Playgroud)
但是,此规则似乎不适用于DOM对象:
var div1 = document.querySelector('div'),
div2 = document.querySelector('div');
console.log(div1 === div2); // The Result will be True!
Run Code Online (Sandbox Code Playgroud)
有谁能解释为什么?
您的第一个示例是比较两个单独的对象.您的DOM示例是将一个对象与自身进行比较.querySelector如果没有创建对象,它会返回对DOM树中已存在的对象的引用.
与您的DOM示例相同的是:
function findElement(element, tag) {
for (var n = 0; n < element.children.length; ++n) {
var child = element.children[n];
if (child.tag === tag) {
return child;
}
}
return null;
}
var tree = {
children: [
{
tag: "child",
name: "I'm the child element",
children: []
}
]
};
var obj1 = findElement(tree, "child");
var obj2 = findElement(tree, "child");
console.log(obj1 === obj2); // trueRun Code Online (Sandbox Code Playgroud)