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
- 模擬實現Object.is()方法程式碼例項Object
- [譯]為什麼你應該在相等比較中使用 Object.is()Object
- Java中parse方法,ValueOf方法,toString方法Java
- Python例項方法、類方法、靜態方法Python
- js includes方法 和 filter方法JSFilter
- Java的方法靜態方法Java
- show()方法和hide()方法IDE
- 方法
- 徹底理解了call()方法,apply()方法和bind()方法APP
- Python Class 的例項方法/類方法/靜態方法Python
- slideUp()方法和slideDown()方法IDE
- Java方法03:方法的過載Java
- 物件導向2--靜態方法、類方法、屬性方法物件
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- 來看看兩種好玩的方法,擴充套件方法和分部方法套件
- initialize方法與load方法比較
- Java System類,currentTimeMillis方法,arraycopy方法。Java
- jQuery方法原始碼定位簡單方法jQuery原始碼
- 細說equals()方法和hashCode()方法
- prop()方法和attr()方法的區別
- 詳解equals()方法和hashCode()方法
- exitFullscreen() 方法
- Promise then() 方法Promise
- removeProperty() 方法REM
- deleteRule() 方法delete
- getPropertyPriority() 方法
- getPropertyValue() 方法
- javascriptreplaceAll方法JavaScript
- main方法AI
- 字串方法字串
- 方法引用
- Java方法Java
- call() 方法
- 類方法
- Main()方法AI
- 【MyBatis原始碼分析】insert方法、update方法、delete方法處理流程(上篇)MyBatis原始碼delete
- 【MyBatis原始碼分析】insert方法、update方法、delete方法處理流程(下篇)MyBatis原始碼delete