Object对象常用的属性和方法

153 阅读2分钟

文章正文第一句:“这是我参与更文挑战的第2天,活动详情查看: 更文挑战

常用属性

数据属性

所谓数据属性就是对象的每一个属性名,数据属性都有四个特征,如下:

configurable:表示能否对该属性 进行配置,比如使用delete删除,能否修改属性特性等。默认为true
enumerable:表示是否能被枚举,比如是否可以用for-in循环获取属性,默认为truewritable:表示是否可写,是否能修改属性的值。默认为truevalue:包含属性的数据值,默认为undefined。

可以使用object.getOwnPropertyDescriptor(person,name)来获取指定的数据属性的描述。

访问器属性Object.defineProperty

访问器属性不包括数据值,他么包括一队getter和setter函数,通过定义访问器属性,可以实现设置一个属性的值会导致其他属性发生变化。

let person = {
    name:"jack"
}
let temp = null;
Object.defineProperty(person,'name',{
    get:function(){
        console.log('被读取')
        return temp;
    },
    set:function(val){
        console.log('被设置')
        temp = val
    }
})
person.name = 'lucy';
console.log(person.name)

原型方法

Object.prototype.hasOwnProperty(‘属性名’)

​ 此方法返回一个布尔值,表示这个对象中是否有这个属性。不会判断原型链上继承到的属性,类似Object.key(),不同于for in 。

Object.prototype.isPrototypeOf()

此方法主要是判断prototypeObj.isPrototypeOf(object),也就是判断对象prototypeObj是否在对象object的原型链上。也可以理解为对象object是否继承自对象prototypeObj。

**Object.prototype.toString()**方法返回一个表示该对象的字符串。可以用来检测对象类型。

对象方法

Object.assign(obj)

将一个对象的所有可枚举属性复制到一个新的对象中,是浅拷贝。

Object.entries(),key(),value()

返回给定对象的可遍历属性的键值对

这里有个重点需要注意一下就是Object.getOwnPropertyNames()Object.keys(),for-in都是可以获取到对象的属性的,但是他们是有区别的这里简单总结一下。

for in:使用for..in循环时,返回的是所有能够通过对象访问的、可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的属性。 Object.keys():用于获取对象自身所有的可枚举的属性值,但不包括原型中的属性,然后返回一个由属性名组成的数组 Object.getOwnPropertyNames():方法返回对象的所有自身属性的属性名包括不可枚举的属性)组成的数组,但不会获取原型链上的属性 差异主要在属性是否可枚举是来自原型还是实例

object.getPrototypeOf(obj)

返回指定对象的原型

Object.setPrototypeOf()方法设置一个指定的对象的原型为另一个对象或null。