天天看点

Object API

目录

object api

创建对象其中对于descriptor属性符可以设置的值如下显示

对象字面量

语法糖,最终会被引擎转化为 let obj = new object()

原型继承的方式

通过原型继承的方式来创建对象,创建出的对象o是一个空对象,并且o的原型指向了{}

这种方式下,

new 构造函数

当用new运算符调用一个函数时,函数返回一个对象,通过构造函数内this指向要返回的对象

object.entries

<code>将对象中的所有key:value转为[key,value]格式,返回包含所有健值对的二维数组</code>

object.fromentries()

把object.entries转换后的二维数组重新转换为对象

6.object.assign()

将多个对象合并到目标的属性合并到目标对象中,相同属性的值以最后一个合并对象的为准,返回目标对象,不改变被合并对象,可以实现浅克隆

语法: object.assign(obj,obj1,obj2...)

obj: 目标对象,可传{}

obj1,obj2...: 被合并的对象,一个或多个

pc端ie全不兼容,移动端只有少量浏览器兼容

object.defineproperty()

object.defineproperty(obj,prop,descriptor):对obj对象上对prop属性进行定义或修改,其中descriptor为被定义或修改的属性符。

value:表示属性的值,默认为undefined

writable:该属性是否为可写,如果直接在对象上定义属性,则默认为true。如果设置为false,则属性仅为可读。

configurable: 如果为false的话,则不能修改(writabel,configurable,enumerable),如果直接在对象上定义属性,则默认为true

enumerable:是否能够被枚举,如果直接在对象上定义属性,则默认为true

get:当对象访问prop属性的时候,会调用这个方法,并返回结果。默认为undefined

set:当对象设置该属性的时候,会调用这个方法,默认为undefined 注意:兼容性不错,移动端几乎全兼容,pc端兼容ie9以上,ie8也能运行,但是只能传dom对象

object.getownpropertysymbols()

<code>object.getownpropertysymbols(obj): 返回一个对象中所有以symbol类型为key的的数组</code>

object.freeze()`

<code>object.freeze(obj):浅冻结一个对象,使其不能做任何修改,深层级的还是可以修改</code>

<code>如果要实现深度冻结,可以通过递归来实现</code>

object.isfrozen()

<code>判断一个对象是否被冻结,是放回true,反之返回false</code>

<code>返回一个对象中所有以symbol类型为key的的数组</code>

object.keys()

<code>查找目标对象的所有key值,并返回一个包含所有key值的数组,和object.getownpropertynames()效果一致</code>

object.values()

<code>返回一个对象的所有value值的数组集合</code>

object.seal()

<code>对一个对象进行密封,并返回被密封的对象,这些对象都是不能够添加属性,不能删除已有属性,以及不能够修改已有属性的可枚举型、可配置型、可写性</code>

object.issealed()

<code>判断一个对象是否被密封,是放回true,反之返回false</code>

object.preventextensions()

<code>让一个对象永远不能添加新的属性,严格模式下会报错</code>

object.isextensible()

<code>判断一个对象是否可以修改属性,是放回true,反之返回false</code>

object.is(val1,val2)

<code>确定两个值是否是相同的值</code>

注意:与=相比,其会将-0和+0看成不等,并且对于两个nan的比较,object.is()会看成是相等的,而=会将0、-0、+0看成相等的,两个nan看成不等

object.getprototypeof(obj):

<code>该方法返回对象的原型对象,如果没有的话,则返回null。</code>

object.getownpropertydescriptor(obj,prop)

<code>查询prop属性存是否在对象obj上,在则返回其属性描述符,如果不存在就返回undefined</code>

<code>属性描述符包括:</code>

set:当对象设置该属性的时候,会调用这个方法,默认为undefined

object.getownpropertynames(obj)

<code>查找目标对象的所有key值,并返回一个包含所有key值的数组,和object.keys()效果一致</code>

枚举的顺序,返回一个数组,枚举出来对象的属性

对象的顺序其实是浏览器厂商自行规定

先排数字,升序 再排其他,按照书写顺序、

hasownproperty(propertyname string)

<code>检查指定的属性是不是自有属性的</code>

区分对象的那些属性是自己的,那些是共有

属性(从父对象哪里继承来的)?

如果要检查是共有属性的话,还需要排除没有这个属性 共有属性是指在原型对象中声明的属性

参数:

propertyname string<code>类型指定的属性名称</code>

返回值:

<code>函数的返回值为boolean类型</code>。如果对象object具有名称为propertyname的属性,则返回true,否则返回false。

object.setprototypeof()

<code>设置某个对象的隐式原型 proto</code>