var mydata1 = {
name: "Noan",
weather: "sunny",
};
var mydata2 = {
name: "Noan",
weather: "sunny",
};
var test = mydata1 == mydata2;
document.writeln(test);
结果是 false ,为什么啊
这相当于两个对象,两个属性相同的对象而已,存的内存地址都不同,指针也不同。比如你根据一个模板,造了一个车子,别人也造了一辆,你的车和别人的车是同一辆吗,你的车钥匙和别人的车钥匙是同一把吗。但是双等于必须(对象内存相同,指针的内存也不必须相同),这里都不符合
两个对象的比较(默认按指针比较)始终是flase啊。这是java的常识了。
按其它规则的比较(比如你这里按成员值比较)都需要重写equals()方法。
首先你要明确的一点是,对象是引用类型。说白了,mydata1和mydata2两个对象其实是存储在内存中两个不同的位置上的,
对象之间的比较其实是比较的内存地址。所以mydata1和mydata2虽然具有相同的属性名和属性值,但是它们完全是两个不同的对象,
所以 mydata1 == mydata2返回的是false。建议你深入学习一下究竟什么是引用类型什么是基本类型
http://www.2cto.com/kf/201410/347045.html
js中 = 是赋值
== 是比较属性值
=== 是比较值得类型和属性值
因为两个对象值不等 所以返回布尔值 false
如果只比较值的话用equals()
首先,test = mydata1 == mydata2是先比较在赋值, mydata1 == mydata2比较完成后再执行test =值
第二, mydata1 == mydata2是mydata1对象是否等于mydata2对象,他们的值一样,却不是同一个对象,所以是false
最后,mydata1 == mydata2想等于true,使用equals()比较
那啥,你对象最后一个属性后面不要加“,”吧