一、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/n/246783.html
微信扫一扫
支付宝扫一扫