一、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
微信掃一掃
支付寶掃一掃