Javascript 内容相同的变量不相等。。。。为什么?
如果两个变量的内容相同,为什么会收到falseJavascript 内容相同的变量不相等。。。。为什么?,javascript,Javascript,如果两个变量的内容相同,为什么会收到false function A() { return {k:'k'}; } function B() { return {k:'k'}; } var a = new A; var b = new B; var s=''; for (prop in a) { if (typeof a[prop] != "function") { s += "a[" + prop + "] = " + a[prop] + "; "; } } a
function A() { return {k:'k'}; }
function B() { return {k:'k'}; }
var a = new A;
var b = new B;
var s='';
for (prop in a) {
if (typeof a[prop] != "function") {
s += "a[" + prop + "] = " + a[prop] + "; ";
}
}
alert(s);
for (prop in b) {
if (typeof b[prop] != "function") {
s += "b[" + prop + "] = " + b[prop] + "; ";
}
}
alert(s);
alert( a == b ); // false?
即使我给a和b分配了相同的函数,也会发生同样的情况
var obj = {};
function A() { return {k:'k'}; }
var a = new A;
var b = new A;
alert( a == b ); // false?
这里也是
k={zor:1};
b={zor:1};
alert(k==b); //false
这是因为对象是通过引用进行比较的
[] === []; // false
根据,
如果两个操作数都是对象,则JavaScript比较内部
当操作数引用中的同一对象时相等的引用
记忆
你正在比较对象,而不是属性。所以我必须手动检查所有属性吗?@ SOL,当你认为两个对象是相同的时,你应该定义你的意思,然后测试它。例如,您可以检查它们是否具有相同的属性own/own+Inheritated,如果这些属性是对象,您也必须决定是使用自己的定义还是通过引用来比较它们。