es6---對象

簡潔寫法

變量和函數均有簡單寫法es6

clipboard.png

簡單寫法的應用:
一、在commonJs模塊中使用。
module.exports = {getItem,setItem,clear}
至關於
module.exports = {數組

getItem:getItem,
setItem:setItem,
clear:clear

}
二、避免因爲是關鍵字而致使語法解析錯誤(自認爲這點不太好)函數

var obj = {
    class () {}
}
至關於
var obj = {
    'class':function(){}
}

定義對象屬性

定義對象屬性有兩種方法:
一、直接用標識符做爲屬性名。
二、用表達式做爲屬性名。es5

clipboard.png

字面量定義對象

es5寫法:(只能用標識符的方法)
clipboard.pngspa

es6寫法:(形式更加多樣化)
clipboard.png
(es6用表達式定義方法名)prototype

clipboard.png

(注意:若是屬性名錶達式是對象,會自動將對象轉爲字符串)code

clipboard.png

方法的name屬性

一、正常返回函數的函數名。
clipboard.png對象

二、對象方法使用了取值函數(getter)和存值函數(setter)。
clipboard.png繼承

三、使用bind()函數時,name屬性的返回值。
name屬性會返回‘bound’加上原函數的名字。
clipboard.png圖片

四、對象方法是個Symbol值,name屬性返回的是這個Symbol值。
clipboard.png

對象經常使用方法

【1】Object.is() --->比較兩個值是否相等。
避免了es5比較值的兩個缺點:
1) +0和-0的問題。
clipboard.png

2)NaN的問題
clipboard.png

【2】Object.assign() --->將全部可枚舉屬性複製到目標對象。
注意:只有第一個參數是目標對象,其餘參數都是源對象。
目標對象與源對象有同名屬性,後面的屬性會覆蓋前面的屬性。
clipboard.png

只有一個參數的狀況:
一、直接將該參數返回。
![圖片上傳中...]

二、將不是對象的參數,先轉化爲對象。
clipboard.png

三、用undefined和null做爲參數,會報錯。由於這兩沒法轉換爲對象。
clipboard.png

可是若是undefined和null不做爲首參數,是不會報錯的,會把沒法轉爲對象的跳過。

四、除了對象外,其餘類型做爲源參數,也不會報錯。但只有字符串會以數組的形式複製到目標對象。
clipboard.png

五、屬性名爲Symbol值的屬性會被Object.assign複製。
clipboard.png

Object.assign是淺複製

複製的只是對象引用,任何對象的變化都會反應到目標函數上。不少時候並非開發者想要的結果。要注意使用。
(1)改變源對象中的值,也會改變目標對象中相應的值,由於是淺複製,複製的只是對象的引用。
clipboard.png

(2)Object.assign是替換而不是添加。
clipboard.png

(3)Object.assign能夠用處理數組,可是會把數組當作對象來處理。
clipboard.png

__proto__,Object.setPrototypeOf,Object.getPrototypeOf

__proto__:用來讀取和設置對象的prototype對象。
__proto__是內部屬性,不管從語義仍是兼容性都最好不用這個屬性。它不是一個正式的對外的API。

最好用setPrototypeOf和getPrototypeOf取代__proto__
setPrototypeOf()
一、將proto對象設置爲obj對象的原型
clipboard.png

二、這個方法會把第一參數轉換爲對象,因此undefined和null做爲第一參數,會報錯。
clipboard.png

三、setPrototypeOf()方法會返回,返回的就是第一個參數。
clipboard.png


getPrototypeOf()
讀取某個對象的原型對象
clipboard.png
一樣:若是參數不是對象會被轉換爲對象,同理,undefined和null做爲參數會報錯。
clipboard.png


Object.keys(),Object.values(),Object.entries()

一、Object.keys() 返回鍵名 --->返回的是一個數組
clipboard.png

二、Object.values() 返回鍵值 --->返回的是一個數組
注意:返回的順序是有規則的,以下圖
clipboard.png

三、Object.entries() 返回鍵值對 --->返回的是一個數組
clipboard.png

注意:若是對象的屬性名是一個Symbol值,該屬性就會被忽略。
clipboard.png


對象的擴展運算符

一、解構賦值是淺複製,複製的值的引用,而不是值的副本。
clipboard.png

二、解構賦值不會複製繼承自原型對象的屬性。
clipboard.png

相關文章
相關標籤/搜索