首頁  >  文章  >  web前端  >  javascript物件新增方法有哪些

javascript物件新增方法有哪些

青灯夜游
青灯夜游原創
2022-01-12 14:03:403452瀏覽

javascript物件的新增方法:1、“Object.is()”,可用來比較兩個值是否嚴格相等;2、“Object.assign()”,可用於物件的合併,將來源物件的所有可枚舉的屬性複製到目標物件。

javascript物件新增方法有哪些

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

javascript物件的新增方法

#1、Object.is()

#es6中,要比較兩個值是否嚴格相等,我們有三種方法,使用相等運算子'=='、嚴格相等運算子'==='或Object.is()方法,但是前兩種方法都有缺陷,在一些特殊場景下不能使用,Object.is()則不會。

Object.is()與'==='運算子的行為基本上一致,

但有兩點不一樣:

(1) 0 不等於-0

#(2)NaN等於本身

2、Object.assign()

(1)Object.assign()用於物件的合併,將來源物件的所有可列舉的屬性複製到目標物件

(2)Object.assign()方法的第一個參數是目標對象,後面的參數都是來源對象。

如果目標物件與來源物件有同名屬性,或多個來源物件有同名屬性,則後面的屬性會覆寫前面的屬性。

 

可以看到two中的b: 2覆蓋了one中的b: 1,three中的c: 3覆蓋了two中的c: 2 

(3)如果只有一個參數,Object.assign()會直接回傳該參數

 

#(4) 如果該參數不是對象,則會先轉換成對象,然後返回。

 可以看到Object.assign()將數值5轉換成了一個Number物件後回傳了

(5)undefined和null無法轉換成對象,如果用他們作為參數則會報錯

如果非對象參數出現在來源對象的位置(即不是第一個參數),處理規則會有所不同。這些參數都會轉換成對象,如果無法轉換成對象則會跳過。這表示undefined和null不是第一個參數就不會報錯,示範如下

#其他類型的值(即數值、字串和布林值)不在首參數(即第一個參數),也不會報錯。但是,除了字串會以數組形式拷貝入目標對象,其他值都不會產生效果。

 

 上面程式碼中,v1 v2 v3分別是字串、布林值和數值,結果只有字串合入目標物件(以字元數組的形式),數值和布林值都會被忽略。這是因為只有字串的包裝對象,會產生可枚舉屬性。

(6)把布林值、數值、字串分別轉成對應的包裝對象,可以看到它們的原始值都在包裝對象的內部屬性[[PrimitiveValue]]上面,這個屬性是不會被Object.assign()拷貝的。只有字串的包裝對象,會產生可列舉的實性屬性,那些屬性則會被拷貝。

#Object.assign()拷貝的屬性是有限制的,只拷貝來源對象自身的屬性(不拷貝繼承過來的屬性),

也不拷貝不可列舉的屬性(enumerable: false)。

【相關推薦:javascript學習教學

#

以上是javascript物件新增方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn