es5 比較兩個值是否相等,只有兩個運算子:相等運算子(==
)和嚴格相等運算子(===
)。它們都有缺點,前者會自動轉換資料型別,後者的nan
不等於自身,以及+0
等於-0
。j**ascript 缺乏一種運算,在所有環境中,只要兩個值是一樣的,它們就應該相等。
es6 提出「same-value equality」(同值相等)演算法,用來解決這個問題。object.is
就是部署這個演算法的新方法。它用來比較兩個值是否嚴格相等,與嚴格比較運算子(===)的行為基本一致。
object.is('foo', 'foo')//true
object.is({}, {})
//false
//不同之處只有兩個:一是+0不等於-0,二是nan等於自身。
+0 === -0 //
true
nan === nan //
false
object.is(+0, -0) //
false
object.is(nan, nan) //
true
es5 可以通過下面的**,部署object.is
。
object.defineproperty(object, 'is',//針對nan的情況
return x !== x && y !==y;
},configurable:
true
, enumerable:
false
, writable:
true
});
ES6 物件的新增方法
object.assign object.assign方法用於物件的合併,將源物件 source 的所有可列舉屬性,複製到目標物件 target const target const source1 const source2 object.assign target,source1,source2...
ES6 物件的新增方法(常用)
1 object.is 它用來比較兩個值是否嚴格相等,與嚴格比較運算子 的行為基本一致。let obj11 let obj12 let r11 object.is obj11,obj12 console.log r11 r11 false let r12 object.is obj11,obj11 ...
es6物件遍歷方法
for in迴圈遍歷物件自身的和繼承的可列舉屬性 不含 symbol 屬性 object.keys返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含 symbol 屬性 的鍵名。object.getownpropertynames返回乙個陣列,包含物件自身的所有屬性 不含 symbol ...