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));
