Object.is
可以看成是=== 的加強版, 其修正了 === 的 NaN 不等於自身, 以及 +0 等於 -0
另外說下, == 會自動轉型, 但是 Object.is 也是如果類型不一致也是不相等的
Object.assign
用於對象的合並, 可以把對象的所有可以枚舉屬性復制到目標對象(枚舉屬性包含原型中的屬性嗎??? ) (=== 只拷貝原對象的自身屬性, 不拷貝繼承的, 也不拷貝不可枚舉的)
如果原對象和目標對象有相同的屬性名, 那么原對象會覆蓋掉目標對象中的屬性值 (這個可以用來批量修改一個對象中改變的值)
如果傳入一個字符串, 那么會以數組的形式拷貝到其中, (這是一個很好的分解字符串的方式)
可以用來處理數組, 但是當做對象來處理的
拷貝的方式是淺拷貝, 就是對於對象中的對象拷貝的是引用
對於取值函數, 不會拷貝取值函數, 是求值后再拷貝 (什么是取值函數??)
用法總結:
1. 為對象添加新的屬性
2. 克隆對象(不克隆原型, 可以使用 Object.create 來指定一個原型)
3. 合並多個對象
4. 為屬性指定默認的值(覆蓋的特性)
Object.getOwnPropertyDescriptors
得到一個對象所有屬性的描述對象(注意不是對象, 而是對象的屬性)
Object.setPrototypeOf
設置一個對象的原型
Object.getPrototypeOf
得到一個對象的原型
Object.keys
返回一個數組, 其內容是對象的鍵名
(除了 for in , 似乎沒有別的遍歷對象的方式了, 要記住引入這個方法的意義)
Object.values
返回一個數組, 其內容死對象的所有的值
Object.entries
返回一個二維數組, 第一個數組存放的是健名, 第二個是值數組
Object.fromEntries
把一個二維數組轉化為一個對象