Object.create和getPrototypeOf
create 方法创建一个新对象,使用现有的对象来提供新创建的对象的proto
getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)
const people = {
name: 'people',
age: 18,
};
// Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
const man = Object.create(
people,
Object.getOwnPropertyDescriptors({
height: '120cm',
weight: '50kg',
}),
);
// Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)
console.log(Object.getPrototypeOf(man));
getOwnPropertyDescriptors和getOwnPropertyDescriptor
getOwnPropertyDescriptors:方法用来获取一个对象的一个自身属性的描述符。
getOwnPropertyDescriptor:方法用来获取一个对象的一个自身属性的描述符。
const people = {
name: 'people',
age: 18,
};
// Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
const man = Object.create(
people,
Object.getOwnPropertyDescriptors({
height: '120cm',
weight: '50kg',
}),
);
// Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)
console.log(Object.getPrototypeOf(man));
// Object.getOwnPropertyDescriptors() 方法用来获取一个对象的所有自身属性的描述符。
console.log(Object.getOwnPropertyDescriptors(man));
// Object.getOwnPropertyDescriptors() 方法用来获取一个对象的一个自身属性的描述符。
console.log(Object.getOwnPropertyDescriptor(man, 'height'));
// Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象
Object.defineProperty(man, 'height', {
value: '180cm',
writable: true,
});
console.log(Object.getOwnPropertyDescriptor(man, 'height'));
// Object.defineProperties方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象
Object.defineProperties(man, {
weight: {
value: '49kg',
},
height: {
value: '180cm',
},
});
console.log(Object.getOwnPropertyDescriptors(man));
// Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组
console.log(Object.entries(man));
defineProperty和defineProperties
defineProperty:方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象
defineProperties:方法直接在一个对象上定义新的属性或修改现有属性【一个或者多个】,并返回该对象
const people = {
name: 'people',
age: 18,
};
// Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
const man = Object.create(
people,
Object.getOwnPropertyDescriptors({
height: '120cm',
weight: '50kg',
}),
);
// Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象
Object.defineProperty(man, 'height', {
value: '180cm',
writable: true,
});
console.log(Object.getOwnPropertyDescriptor(man, 'height'));
// Object.defineProperties方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象
Object.defineProperties(man, {
weight: {
value: '49kg',
},
height: {
value: '180cm',
},
});
console.log(Object.getOwnPropertyDescriptors(man));