一、Object.assign(目标对象,源对象) 浅复制、合并、拷贝、

继承属性和不可枚举的属性是不能被拷贝的

将所有源对象的所有属性复制到目标对象上,并且返回目标对象

不能复制不可枚举属性

var o=Object.assign({},obj,obj1);

var o ={...obj,...obj1}//复制,重新变成1个新对象

二、Object.keys(o) 获取o对象的所有key组成的数组

三、Object.values(o) 获取o对象的所有value组成的数组

四、Object.entries(o)

返回一个给定对象自身可枚举属性的键值对数组

五、Object.is() 判断两个值是否相同。

如果下列任何一项成立,则两个值相同:

  • 两个值都是 undefined
  • 两个值都是 null
  • 两个值都是 true 或者都是 false
  • 两个值是由相同个数的字符按照相同的顺序组成的字符串
  • 两个值指向同一个对象
  • 两个值都是数字并且
    • 都是正零 +0
    • 都是负零 -0
    • 都是 NaN
    • 都是除零和 NaN 外的其它同一个数字
Object.is({}, {})// false
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

六、Object.fromEntries 把array转换为object

Object.entries的反向操作,把array转换为object 。
该方法可以把键值对列表转化为一个对象,入参可以是一个Map、Set、Array类型,或者其他实现了可迭代协议的可迭代对象。

七、delete 删除对象的属性

八、 Object.defineProperty(对象,属性名,属性描述对象); 定义属性,也可以定义Symbol

属性描述对象:writable/value,set/get这两对不能同时出现
默认为false
        {
            configurable:true,//不可删除和不可修改属性描述对象
            enumerable:true,  //是否可以枚举
            writable:true,    //是否只读
            value:1,          //属性值
						set:function(){   //设置
            },
 						 get:function(){    //读取
            }
        }
var obj={a:1,b:2};
obj.c=3;
Object.defineProperty(obj,"d",{
            value:4
})
console.log(obj);
    
    
例:Object.defineProperty(obj,"c",{
            configurable:true,
            enumerable:true,
            writable:false,
            value(a,b){
                console.log(a+b)
            }
        })
        obj.c(3,5);//8
    
 默认例:// var obj={a:1,b:2};
        // obj.c=3;
        // Object.defineProperty(obj,"d",{
        //     value:4
        // })
        // obj.d=5
        // console.log(obj);
    这时候的d属性不能删除不能修改只读而且不可枚举

九、 Object.defineProperties()定义属性,可定义多个,默认为false,可定义Symbol

Object.defineProperties(obj,{
            c:{
                writable:true,
                value:30
            },
            d:{
                configurable:true,
                value:4
            },
            e:{
                enumerable:true,
                value:5
            }
        })

        var s=Symbol();
        obj[s]=10;
        console.log(obj);

十、Object.getOwnPropertyNames(obj) 获取对象的所有属性名,返回属性名组成的数组,Symbol不能获取

十一、Object.getOwnPropertySymbols(obj) 获取对象的所有Symbol属性名,返回属性名组成的数组

		合并十和十一:concat和解构
		// 不能获取到原型属性
    // var arr=Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));
    // console.log(arr);
    // var arr=[...Object.getOwnPropertyNames(obj),...Object.getOwnPropertySymbols(obj)];
    // console.log(arr)

十二、Object.getOwnPropertyDescriptor(obj,"d"); 获取属性的描述对象

十三、Reflect.ownKeys(obj); 获取到对象所有属性和方法名,包括Symbol属性

十四、Reflect.defineProperty 定义属性,默认为false,可定义Symbol,与Object.defineProperty相同

十五、 Reflect.deleteProperty(obj,"c"); 删除

十六、 Object.freeze(obj);冻结 不能修改属性,不能删除属性,不能添加属性

十七、 Object.isFrozen(obj) 判断对象是否被冻结

十八、 Object.seal(obj); 可以修改,不能删除,不能添加属性

十九、 Object.isSealed(obj) 判断是否使用seal

二十、 Object.preventExtensions(obj); 可以修改,可以删除,但是不能添加新属性,不能扩展

二十一、Object.isExtensible(obj) 判断是否可以扩展

二十二、Object.getOwnPropertyDescriptors(obj) 获取对象中所有属性的描述对象列表对象

二十三、Object.getPrototypeOf(obj) 获取obj对象的原型链

二十四、Object.setPrototypeOf(o1,o) 设置对象的原型链

将o1的原型链设置为o

二十五、 判断对象的对象属性是否包含这个属性名

console.log(o1.hasOwnProperty("b"))

console.log(Object.hasOwn(o1,"b"))

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐