一、Object.create()
Object.create()
方法可以用於創建一個新對象,新對象的原型指向指定對象。具體來說,該方法接收參數:Object.create(proto, [propertiesObject])
,其中proto
表示新對象的原型,propertiesObject
表示對象的屬性,是可選參數。
示例代碼:
const parent = { name: "Parent", printName() { console.log(this.name); } }; const child = Object.create(parent); child.name = "Child"; child.printName(); // Child
上述示例中,通過Object.create()
方法創建了一個新對象child
,child
的原型指向parent
。子對象可以覆蓋父對象的屬性和方法,如代碼中的name
屬性。通過child.printName()
方法調用,輸出的是child
對象的name
屬性。
二、Object.defineProperty()
Object.defineProperty()
方法可以用於在對象上定義一個新屬性或修改已有屬性的特性。具體來說,該方法接收參數:Object.defineProperty(obj, prop, descriptor)
,其中obj
表示要定義屬性的對象,prop
表示要定義的屬性名,descriptor
表示屬性的描述符,是一個對象。
示例代碼:
const obj = {}; Object.defineProperty(obj, "name", { value: "Alice", writable: false, enumerable: true, configurable: true }); console.log(obj.name); // Alice obj.name = "Bob"; // 嘗試修改name屬性 console.log(obj.name); // Alice,因為writable為false
上述示例中,通過Object.defineProperty()
方法在obj
對象上定義了一個name
屬性,value
表示屬性值為”Alice”,writable
表示屬性不可修改(即只讀),enumerable
表示屬性可枚舉,configurable
表示屬性可被刪除或重新設置特性。
三、Object.defineProperties()
Object.defineProperties()
方法與Object.defineProperty()
類似,但可以定義多個屬性。具體來說,該方法接收參數:Object.defineProperties(obj, props)
,其中obj
表示要定義屬性的對象,props
表示要定義的屬性,是一個對象。
示例代碼:
const obj = {}; Object.defineProperties(obj, { name: { value: "Alice", writable: false, enumerable: true, configurable: true }, age: { value: 25, writable: true, enumerable: true, configurable: true } }); console.log(obj.name); // Alice obj.name = "Bob"; // 嘗試修改name屬性 console.log(obj.name); // Alice,因為writable為false console.log(obj.age); // 25 obj.age = 30; // 嘗試修改age屬性 console.log(obj.age); // 30,由於writable為true,屬性可以修改
上述示例中,通過Object.defineProperties()
方法在obj
對象上一次性定義了兩個屬性name
和age
,name
屬性是只讀的,age
屬性是可讀寫的。
四、Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors()
方法可以獲取一個對象的所有自身屬性的描述符。具體來說,該方法接收參數:Object.getOwnPropertyDescriptors(obj)
,其中obj
表示要獲取屬性描述符的對象。
示例代碼:
const obj = { name: { value: "Alice", writable: false }, age: { value: 25, writable: true } }; const descriptors = Object.getOwnPropertyDescriptors(obj); console.log(descriptors);
上述示例中,通過Object.getOwnPropertyDescriptors()
方法獲取了obj
對象的所有自身屬性的描述符,並將結果輸出到控制台。
五、Object.freeze()
Object.freeze()
方法可以凍結一個對象,使其屬性不可修改、刪除或添加。具體來說,該方法接收參數:Object.freeze(obj)
,其中obj
表示要凍結的對象。
示例代碼:
const obj = { name: "Alice", age: 25 }; Object.freeze(obj); obj.name = "Bob"; // 嘗試修改name屬性 obj.gender = "female"; // 嘗試添加gender屬性 delete obj.age; // 嘗試刪除age屬性 console.log(obj); // 輸出{ name: 'Alice', age: 25 }
上述示例中,通過Object.freeze()
方法凍結了obj
對象,使其屬性不可修改、刪除或添加。嘗試修改、添加或刪除對象的屬性均會被忽略。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246783.html