ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # Object 静态成员对象 <br> ```javascript var obj ={ name :"wc", age :3, say:function(){ console.log("世界,你好"); } } ``` ***** ## 1.length 形参个数 <br> ## 2.name 方法名称 <br> ## 3.assign 将多个对象合并到一个对象中并返回 ```javascript var obj = {name:"Neld", age:10}; console.log(Object.assign(obj, {info: "xxx"}, {name: "zs"})); ``` <br> >[success]返回结果为:{name:"zs", age:10, info:"xxx"}, **如果多个对象想存在相同的属性,后面会将前面属性值覆盖。** <br> ## 4.create 创建对象,并设置原型对象, ``` console.log(Object.create(null)); ``` **创建的对象没有原型链** <br> ## 5.is 判断两个参数是否相等,等同于=== >[danger]**注意两个特殊的例子** ```javascript console.log(0 === -0);//true console.log(Object.is(-0, 0));//false console.log(NaN === NaN);//false console.log(Object.is(NaN, NaN));//true ``` <br> ## 6.getOwnPropertyDescriptor 获取当前对象中的指定的属性描述对象 ``` console.log(Object.getOwnPropertyDescriptor(obj,"name")); ``` >[danger]每个属性描述对象都存在下面四个属性: >[info]configurable:属性可配置型,false,当前属性不能被删除,并且后面不能再改变该描述对象 默认值是true enumerable:可枚举性,false,当前属性不是被循环遍历到 默认值是true value:当前属性的值 writable:可写性,false,当前属性的值不能被修改 默认值是true <br> ## 7.getOwnPropertyDescriptors 获取所有属性的描述对象 ``` console.log(Object.getOwnPropertyDescriptors(obj)); ``` <br> ## 8.defineProperties 一次定义多个属性的可操作性 (configurable enumerable value writable) ***** ```javascript Object.defineProperties(obj,{     name:{         configurable:true,//当前属性可以被删除     },     age:{         configurable:false,//当前属性不可删除     }, }); console.log(delete obj.name); //删除成功返回值是true  console.log(obj.name);//undefined console.log(delete obj.age);//false console.log(obj.age);//3 ``` ## 9.defineProperty 定义当前指定属性的可操作性 (configurable enumerable value writable) ```javascript Object.defineProperty(obj,"name",{ configurable:true, }); console.log(delete obj.name);//删除成功返回值是true  console.log(obj.name);//undefined ``` **注意** 当为一个存在的属性设置可操作性时,如果只是修改属性描述对象的部分属性,其他的为默认值。 当为一个不存在的属性设置可操作性时,如果只是修改属性描述对象的部分属性,其他的为false。 <br> ## 10.keys 获取当前对象所有属性的名称,不可枚举的属性除外 ```javascript Object.defineProperty(obj,"name",{     enumerable:false,//可枚举性,false不可枚举 }) console.log(Object.keys(obj));  //拿到age,name被设置了不可枚举性,拿不到; ``` <br> ## 11.getOwnPropertyNames 获取当前对象所有属性的名称,包括不可枚举的属性 ``` console.log(Object.getOwnPropertyNames(obj));//name,age ``` <br> ## 12.isExtensible 检查当前对象是否可扩展,false,不能添加属性,默认值是true ``` console.log(Object.isExtensible(obj));//true ``` <br> ## 13.isSealed 检查当前对象是否是被密封的,true,不能添加和删除属性 ``` console.log(Object.isSealed(obj));//false ``` <br> ## 14.isFrozen 检查当前对象是否是被冻结的,true,不能添加,删除和修改属性 ``` console.log(Object.isFrozen(obj));//false ``` <br> ## 15.preventExtensions 阻止当前对象的可扩展性,就是添加不了属性了 ```javascript Object.preventExtensions(obj);//不能添加属性,可以删除和修改 obj.corlor = "red"; obj.age = 18; console.log(delete obj.name) console.log(obj); ``` <br> ## 16.seal 密封当前对象、添加删除不了,可以修改 ```javascript Object.seal(obj);//不能删除,不能添加,可以修改 obj.corlor = "red"; obj.age = 18; console.log(delete obj.name) console.log(obj); ``` <br> ## 17.freeze 冻结当前对象、不能添加、不能修改、不能删除 ```javascript Object.freeze(obj); obj.corlor ="red"; obj.age \=18; console.log(delete obj.name) console.log(obj); ``` <br> ## 18.entries 获取到所有成员,以数组形式返回 ```javascript var obj2 \={ name:"lw", age:33, sex :0, say:function(){ console.log("世界,你好"); }, } console.log(obj2); console.log(Object.entries(obj2)); ```