3 回答

TA貢獻1878條經(jīng)驗 獲得超4個贊
C
var Cat = function() {
this.color = {};
this.say = function() {
console.log('miao')
}
}
var c1 = new Cat()
var c2 = new Cat()
P
console.log(c1.color === c2.color);
console.log({} === {});
console.log(123 === 123);
S

TA貢獻1725條經(jīng)驗 獲得超8個贊
樓上說的沒錯,基本類型的比較只比個值,另外字符串在js中是常量,相同值的常量會不會只存儲一份我不是特別清楚,我想說的是,如果兩個變量引用了值相等的兩個字符串,那這兩個字符串可能確實是同一個字符串,他們占用的是同一個存儲空間。
用函數(shù)來構(gòu)造對象,并在構(gòu)造函數(shù)里動態(tài)添加類方法,每次執(zhí)行構(gòu)造函數(shù)都會生成匿名函數(shù)作為類方法,所以每次new
出來的對象的同名的方法其實都是占用不同內(nèi)存空間的匿名函數(shù),用==
比較它們時,比較的其實是它們的地址,或者說“是否是同一個對象”。而字符串,數(shù)字這些基本類型的數(shù)據(jù),用==
比較時,比較的是它們的值,否則你要怎么判斷兩個數(shù)字相等?
添加回答
舉報