Object seal() 方法

了解 JavaScript Object 物件的 seal() 方法 JavaScript 的 Object 物件的 seal() 方法接受一個物件作為參數,並回傳相同的物件。傳入的物件會被改變,並成為一個不接受新屬性的封閉物件。新的屬性無法添加,現有的屬性無法移除,但現有的屬性可以更改。 範例: const dog = {} dog.breed = 'Siberian Husky' Object.seal(dog) dog.breed = 'Pug' dog.name = 'Roger' //TypeError: 無法添加屬性 name,物件不可擴展 傳入的參數也會作為回傳值,因此 dog === myDog(它們是同一個物件)。 類似於 Object.freeze(),但不會使屬性不可寫。它只是防止添加或移除屬性。 類似於 Object.preventExtensions(),但也禁止移除屬性: const dog = {} dog.breed = 'Siberian Husky' dog.name = 'Roger' Object.seal(dog) delete dog.name //TypeError: 無法刪除物件的 'name' 屬性

Object setPrototypeOf() 方法

了解 JavaScript Object 物件的 setPrototypeOf() 方法。 設置物件的原型。 別忘了,還能參閱我的 JavaScript 原型繼承 指南喔! 接受兩個參數:物件和原型。 用法: Object.setPrototypeOf(物件, 原型) 範例: const Animal = {} Animal.isAnimal = true const Mammal = Object.create(Animal) Mammal.isMammal = true console.log('-------') Mammal.isAnimal //true const dog = Object.create(Animal) dog.isAnimal //true console.log(dog.isMammal) //undefined Object.setPrototypeOf(dog, Mammal) console.log(dog.isAnimal) //true console.log(dog.isMammal) //true

Object 的 getOwnPropertySymbols() 方法

了解 JavaScript 中 Object 物件的 getOwnPropertySymbols() 方法。 獲取物件中定義的符號陣列。 符號(Symbols) 是 ES2015 的一個特性,這個方法也是在 ES2015 中引入的。 範例: const dog = {} const r = Symbol('Roger') const s = Symbol('Syd') dog[r] = { name: 'Roger', age: 6 } dog[s] = { name: 'Syd', age: 5 } Object.getOwnPropertySymbols(dog) //[ Symbol(Roger), Symbol(Syd) ]

Object 的 isExtensible() 方法

了解 JavaScript Object 物件的 isExtensible() 方法 這個方法會檢查是否可以向物件新增新的屬性。 除非物件被以下的方法使用作為參數,否則任何物件都是可擴展的: Object.freeze() Object.seal() Object.preventExtensions() 使用方式: const dog = {} Object.isExtensible(dog) //true const cat = {} Object.freeze(cat) Object.isExtensible(cat) //false

Object 的 values() 方法

了解 JavaScript 中 Object 物件的 values() 方法 該方法會回傳包含所有物件自有屬性值的陣列。 使用方法: const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87] Object.values() 也可用於陣列: const people = ['Fred', 'Tony'] Object.values(people) // ['Fred', 'Tony']

Object.assign()方法

在本篇文章中,我們將介紹JavaScript中的Object.assign()方法。 這個方法在ES2015中引入,它將一個或多個物件的可枚舉自身屬性複製到另一個物件中。 它的主要用途是創建一個對象的淺拷貝。 const copied = Object.assign({}, original) 由於是淺拷貝,值被複製,對象引用被複製(而不是對象本身),所以如果在原始對象上編輯一個對象屬性,則在複製的對象中也會修改,因為內部引用的對象是相同的: const original = { name: 'Fiesta', car: { color: 'blue' } } const copied = Object.assign({}, original) original.name = 'Focus' original.car.color = 'yellow' console.log(copied.name) // Fiesta console.log(copied.car.color) // yellow 我們提到了"一個或多個": const wisePerson = { isWise: true } const foolishPerson = { isFoolish: true } const wiseAndFoolishPerson = Object.assign({}, wisePerson, foolishPerson) console.log(wiseAndFoolishPerson) //{ isWise: true, isFoolish: true }

Object.entries() 方法

了解 JavaScript Object 对象的 entries() 方法。 在 ES2017 中引入。 此方法返回一个数组,包含所有对象自身属性的 [key, value] 对。 用法示例: const person = { name: 'Fred', age: 87 } Object.entries(person) // [['name', 'Fred'], ['age', 87]] Object.entries() 也适用于数组: const people = ['Fred', 'Tony'] Object.entries(people) // [['0', 'Fred'], ['1', 'Tony']] 你可以结合数组的 length 属性,使用它来计算对象包含的属性数量。

Object.freeze() 方法

在這篇文章中,我們將介紹 JavaScript 中 Object 物件的 freeze() 方法。 JavaScript 的 Object.freeze() 方法接受一個物件作為參數,並返回相同的物件。傳遞給該方法的物件會被改變,並變成不可變的物件。新的屬性無法添加,現有的屬性無法被刪除或更改。 示例: const dog = {} dog.breed = 'Siberian Husky' const myDog = Object.freeze(dog) Object.isFrozen(dog) //true Object.isFrozen(myDog) //true dog === myDog //true dog.name = 'Roger' //TypeError: Cannot add property name, object is not extensible 在這個示例中,dog 和 myDog 都被凍結了。傳遞給 Object.freeze() 的參數被改變後無法恢復。同時,該方法也返回相同的物件,因此 dog === myDog (它們是同一個物件)。 調用 Object.freeze() 方法等同於調用 Object.preventExtensions() 方法,用於防止物件添加更多屬性,並且將所有屬性設置為不可配置和不可寫。

Object的defineProperties()方法

了解JavaScript中Object对象的defineProperties()方法的所有信息 一次性创建或配置多个对象属性 返回对象 需要2个参数,第一个是要创建或配置属性的对象,第二个是属性对象 例子: const dog = {} Object.defineProperties(dog, { breed: { value: 'Siberian Husky' } }) console.log(dog.breed) //'Siberian Husky' 我不只是说 breed: 'Siberian Husky',而是要传入一个属性描述符对象,该对象在本页面的开头进行了定义。 它可以与Object.getOwnPropertyDescriptors()一起使用,从另一个对象中复制属性: const wolf = { /*... */ } const dog = {} Object.defineProperties(dog, Object.getOwnPropertyDescriptors(wolf))

Object的getOwnPropertyNames()方法

了解JavaScript中Object对象的getOwnPropertyNames()方法 Object.getOwnPropertyNames()返回一个包含传入参数对象的所有自有属性名称的数组,包括不可枚举属性。它不考虑继承属性。 不可枚举属性不会被迭代。例如,在for..of循环中不会列出其属性。 如果只想获取可枚举属性的列表,可以使用Object.keys()。 示例: const dog = {} dog.breed = 'Siberian Husky' dog.name = 'Roger' Object.getOwnPropertyNames(dog) //[ 'breed', 'name' ]