Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 内容相同的变量不相等。。。。为什么?_Javascript - Fatal编程技术网

Javascript 内容相同的变量不相等。。。。为什么?

Javascript 内容相同的变量不相等。。。。为什么?,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

如果两个变量的内容相同,为什么会收到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] + "; ";
   }
}
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,如果这些属性是对象,您也必须决定是使用自己的定义还是通过引用来比较它们。