1、Object.getOwnPropertyDescriptor
(1)方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)
(2)参数
Object.getOwnPropertyDescriptor(obj,prop)
obj:需要查找的目标对象
prop:目标对象的属性
(3)返回值
如果指定的属性存在于对象上,则返回其属性描述符对象(property descriptor),否则返回undefined。
value
该属性的值(仅针对数据属性描述符有效)
writable
当且仅当属性的值可以被改变时为true。(仅针对数据属性描述有效)
get
获取该属性的访问器函数(getter)。如果没有访问器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
set
获取该属性的设置器函数(setter)。 如果没有设置器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
configurable
当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true。
enumerable
当且仅当指定对象的属性可以被枚举出时,为true。
2、Object.keys
(1)方法会返回一个由一个给定对象的自身可枚举属性组成的数组
(2)参数
Object.keys(obj)
obj目标对象
(3)返回值
一个表示给定对象的所有可枚举属性的字符串数组。
3、Object.values
(1)方法返回一个给定对象自身的所有可枚举属性值的数组
(2)参数
Object.values(obj)
obj目标对象
(3)返回值
一个包含对象自身的所有可枚举属性值的数组。
4、Object.defineProperty
(1)方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
(2)参数
Object.defineProperty(obj,prop,descriptor
obj
要定义属性的对象。
prop
要定义或修改的属性的名称或Symbol。
descriptor
要定义或修改的属性描述符。
(3)返回值
被传递给函数的对象
const object1 = {};
Object.defineProperty(object1, 'name', {
get: function(){
return name
},
set: function(val){
console.log("我被执行了");
name = val
}
});
5、Object.getOwnPropertyNames
(1)方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
(2)参数
Object.getOwnPropertyNames(obj)
obj:一个对象,其自身的可枚举和不可枚举属性的名称被返回。
(3)返回值
在给定对象上找到的自身属性对应的字符串数组。