一、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