day21-对象方法1.对象原型方法hasOwnProperty--用来判断一个对象是否有自有属性语法:object.hasOwnProperty(属性名)--returnbool,如果为真,则有,false不注意:只有自己内部的非继承属性才能返回true,继承的和非自己的属性都是false。isPrototypeOf——判断一个对象是否在另一个对象的原型上语法:objecta.isPrototypeOf(objectb)——返回一个布尔值(propertyname)//returnbooleanvaluetoString--用于将object转为string语法:object.toString()//return'[objectObject]'toString-----将数字转为字符串,有toString用于切换基础字符串,toString用于布尔值,toString用于时间和日期,没有toString的undefined和null,toLocaleString和valueOf没有实际作用,所以子原型可以有这些方法来实现不同类型数据的功能。对象的toLocaleString没有特殊含义。toString的结果与数字的结果相同。默认情况下,调用toString方法将其转换为字符串。对象的valueOf没有特殊含义。时间日期对象的valueOf获取时间戳。注意:时间日期对象调用可以获得时间戳,其他类型的对象调用会得到具体的值,相当于console.log(array/object)Value2,Objectmethod1,assign--用来复制一个对象中的可遍历属性到另一个目标对象,并返回目标对象语法:varnewtargetobject=Object.assign(originaltargetobject,copiedobject)常用于做浅克隆,将一个对象的属性复制到另一个空对象.2.create--用于创建对象并指定对象的原型语法:varobject=Object.create(specifiedprototypeobject,{descriptionofobjectkey-valuepair})//返回创建的对象参数1必须填写in,并且参数必须是一个对象或null。参数2是可选的,默认为空对象。它通常用于浅克隆,将一个对象中的属性复制到另一个空对象中。3.defineProperties--用于给对象添加或修改属性语法:Object.defineProperties(object,{descriptionofobjectkey-valuepair})//返回处理后的对象4.defineProperty--用于监控一个属性一个对象访问或修改操作语法:Object.defineProperty(object,propertyname,{//对象属性的描述writable:false,//属性是否可以修改enumerable:true,//属性是否可以遍历configurable:false,//属性是否可以删除get:undefined,//访问属性值时执行什么程序set:undefined//设置属性值时执行什么程序}5、entries--用于形成可遍历对象中的键值对一个数组并返回语法:Object.entries(object)//返回一个数组6、freeze--用于冻结一个对象,使该对象不能被添加、修改、删除、原型化或属性不能改变语法:varobject=Object.freeze(object)//返回冻结的对象7.fromEntries--与entries的作用相反,将map格式的数组(由多个键值对组成的数组)转换为对象语法:Object.fromEntries(datainmapformat)//返回一个由键值对组成的对象,将map转换为对象8.getOwnPropertyDescriptors--获取对象中某个属性对应的描述对象语法:Object.Object.getOwnPropertyDescriptors(object)--Return对象的描述符9.getOwnPropertySymbols-形成对象中所有交易品种属性的数组。语法:Object.getOwnPropertySymbols(object)-形成对象中所有符号属性的数组Return10.getPrototypeOf-获取对象对象的原型。语法:Object.getPrototypeOf(object)——获取原型11、hasOwn——判断一个属性是否属于一个对象,而不是被继承。与hasOwnProperty功能相同。语法:Object.hasOwnProperty()====Object.hasOwn(object,property)12.is--用于判断两个数据是否相等,但不同于==和===,基本类型数据,判断数据是否相等,引用数据类型比较地址是否相同===语法:Object.is(data1,data2)//返回布尔值13,isExtensible--用于判断一个对象是否可扩展(是否可以给对象添加属性)。冻结的物体和密封的物体不能展开。语法:Object.isExtensible(object)——判断一个对象是否可扩展14、isFrozen——用来判断一个对象是否被冻结。语法:Object.freeze(object)--冻结一个对象,使该对象不能设置/删除所有属性和原型15.keys--获取对象中所有键的数组。语法:Object.keys(object)-将所有键放入数组中并返回16。preventExtensions-用于使对象不可扩展。语法:Object.preventExtensions(object)——使一个对象不可扩展(notaddable)17、setPrototypeOf——用来为对象设置原型。语法:Object.setPrototypeOf(object,prototype)--为对象设置原型18、seal--关闭一个对象,使该对象不能添加新的属性,也不能删除键值对语法:Object.seal(objecttobeclosed)//返回关闭的对象19、values--获取对象中所有值的数组。语法:Object.values(object)-把所有的值放在一个数组中并返回3.ES6的对象操作Symbol-专业用作对象的属性,让对象可以有多个同名属性Reflect--反射就是把对象的基本操作换成了函数的写法。有了返回值,方便我们判断。//返回值或未定义b--setpropertywithsetmethodReflect.set(object,key,value)//添加键值对到对象,返回布尔值c--deletewithdeletePropertymethodReflect.deleteProperty(object,key)//删除对象键值对,返回一个布尔值Proxy--是一个构造函数,创建一个和原对象一模一样的被监控对象语法:varobj={name:'张三'}varpbj=newProxy(obj,{get(object,key){console.log(object,key);return111},set(object,key,val){console.log(object,key,val);}})pbj.name='张三'//{name:'张三'}'name''张三'console.log(pbj.name);//{name:'张三'}'名字'
