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物件的getOwnPropertyDescriptor()方法

在這篇文章中,我們將介紹JavaScript中Object物件的getOwnPropertyDescriptor()方法。 該方法可以用於獲取特定屬性的描述符。 使用方法如下: const propertyDescriptor = Object.getOwnPropertyDescriptor(object, propertyName) 例如: const dog = {} Object.defineProperties(dog, { breed: { value: 'Siberian Husky' } }) Object.getOwnPropertyDescriptor(dog, 'breed') /* { value: 'Siberian Husky', writable: false, enumerable: false, configurable: false } */ 標籤:JavaScript, Object物件, getOwnPropertyDescriptor()方法

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' ]

Object的getPrototypeOf()方法

了解JavaScript Object对象的getPrototypeOf()方法。 返回对象的原型。 使用方法: Object.getPrototypeOf(obj) 示例: const animal = {} const dog = Object.create(animal) const prot = Object.getPrototypeOf(dog) animal === prot // true 如果对象没有原型,我们会得到null。这是Object对象的情况: Object.prototype // {} Object.getPrototypeOf(Object.prototype) // null

Object的is()方法

了解一下JavaScript中Object对象的is()方法。 這個方法在ES2015中被引入,它旨在幫助比較值。 用法: Object.is(a, b) 除非以下情況,否則結果始終為false: a和b是同一個對象 a和b是相等的字符串(字符串由相同的字符以相同的順序組成時,它們是相等的) a和b是相等的數字(當它們的值相等時,數字是相等的) a和b都是undefined,都是null,都是NaN,都是true或者都是false 在JavaScript中,0和-0是不同的值,所以在這種特殊情況下要注意(在比較之前,將它們都轉換為+0,例如使用+一元運算符)。