Object.is()方法
Object.is方法用來判斷兩個值是否相同。
如果兩個引數相等,方法返回true,否則返回false。
ES2015新增此方法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼Object.is(value1, value2)
引數解析:
(1).value1:必需,要判斷是否相等的第一個值。
(2).value2:必需,要判斷是否相等的第二個值。
在ES2015之前,如果要判斷兩個值是否相同可以使用等號運算子或者全等運算子。
關於兩個運算子的基本用法可以參閱如下兩篇文章:
(1).等號運算子參閱JavaScript等號(==)運算子一章節。
(1).全等運算子參閱JavaScript等號(===)運算子一章節。
兩個運算子有各自的特點,等號運算子會進行隱式資料型別轉換。
[PHP] 純文字檢視 複製程式碼console.log("2"==2);
程式碼執行效果截圖如下:
上述程式碼首先會將字串"2"轉換為數字2,然後再進行兩個值的比較。
雖然全等運算子不會進行隱式資料型別轉換,更為嚴格一些,但是也有一些比較特殊的情況:
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(+0===-0); console.log(+0==-0);
程式碼執行效果截圖如下:
上述程式碼列印結果為true(相等運算子返回值也是true),嚴格講起來兩個是不相等的。
資料在計算機中都是通過二進位制儲存的,二進位制資料的有一位是符號位,用來標識資料的正負。
再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(NaN===NaN); console.log(NaN==NaN);
程式碼執行效果截圖如下:
NaN與NaN不相等這是符合JavaScript語法的。
然而事實是它們兩個確實是一模一樣,有時候我們的需求可能就是如此"膚淺",只要兩個資料外表長的一樣,那它兩個就相等,Object.is方法恰好滿足了此需求。
瀏覽器相容:
(1).IE瀏覽器不支援此方法。
(2).Edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera瀏覽器不支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let webName = "螞蟻部落"; let str = "螞蟻部落"; console.log(Object.is(webName,str))
程式碼執行效果截圖如下:
非常明顯,兩個字串是一模一樣的。
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(Object.is(+0,-0));
程式碼執行效果截圖如下:
就是這麼以貌取人,因為兩個值長的不一樣(實質也是不一樣的),返回值為false。
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(Object.is(NaN,NaN));
程式碼執行效果截圖如下:
通常來講NaN與自身都不相等,但是Object.is是以貌取人的。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let one={ webName:"螞蟻部落", url:"http://www.softwhy.com" } let two={ webName:"螞蟻部落", url:"http://www.softwhy.com" } console.log(Object.is(one,two))
程式碼執行效果截圖如下:
為什麼上面會列印false,兩個物件明明是一模一樣的。
如果有此想法,肯定是對引用型別資料儲存方式不夠了解。
變數one和two中儲存的是兩個物件在記憶體中的地址,兩個物件的地址肯定是不一樣的,所以返回false。
關於值型別資料可以參閱JavaScript值型別和引用型別一章節。
相關文章
- Object.is()與'==='Object
- Java中parse方法,ValueOf方法,toString方法Java
- Java的方法靜態方法Java
- js includes方法 和 filter方法JSFilter
- 方法
- initialize方法與load方法比較
- Java System類,currentTimeMillis方法,arraycopy方法。Java
- Java方法03:方法的過載Java
- [方法]需求挖掘採集的方法
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- wait()方法與await()方法的區別AI
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- getPropertyPriority() 方法
- deleteRule() 方法delete
- getPropertyValue() 方法
- getBoundingClientRect() 方法GCclient
- removeProperty() 方法REM
- Equals方法
- call() 方法
- Promise then() 方法Promise
- 一、方法
- 迭代方法
- replace方法
- SpecialCells 方法
- requestFullScreen() 方法
- exitFullscreen() 方法
- toJSON() 方法JSON
- Java方法Java
- 方法引用
- Main()方法AI
- finalize方法
- 類方法
- 方法值
- 方法的過載、可變形參的方法、方法的引數值傳遞機制、遞迴方法遞迴
- Java方法02:方法的定義和呼叫Java
- Java基礎系列-equals方法和hashCode方法Java
- Java中方法重寫與方法過載Java
- net 靜態方法與非靜態方法