目录
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>