【react】有关对象的使用方法(详细)
·
1. Object.assign(目标对象,源对象) 浅复制、合并、拷贝
注意:继承属性和不可枚举的属性是不能被拷贝的;不能复制不可枚举属性
// 将所有源对象的所有属性复制到目标对象上,并且返回目标对象
const obj=Object.assign({},obj,obj1);
const obj ={...obj,...obj1} // 复制,重新变成1个新对象
2. Object.keys(obj) 获取obj对象的所有key组成的数组
const obj={"a":1,"b":2}
console.log(Object.keys(obj))
// 打印结果: ['a', 'b']
3. Object.values(obj) 获取o对象的所有value组成的数组
const obj={"a":1,"b":2}
console.log(Object.values(obj))
// 打印结果: [1, 2]
4. Object.entries(obj) 返回一个给定对象自身可枚举属性的键值对数组
const obj={"a":1,"b":2}
console.log(Object.entries(obj))
// 打印结果:
(2) [Array(2), Array(2)]
0: (2) ['a', 1]
1: (2) ['b', 2]
5. Object.is() 判断两个值是否相同
const obj={"a":1,"b":2}
console.log(Object.is(obj)) //false
Object.is({}, {}) // false
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
注意 下列任何一项成立,则两个值相同:
都是 undefined
都是 null
都是 true 或者都是 false
由相同个数的字符按照相同的顺序组成的字符串
指向同一个对象
都是数字并且都是正零 +0 或者 都是负零 -0
都是 NaN
都是除零和 NaN 外的其它同一个数字
6. Object.fromEntries() 把array转换为object
const obj={"a":1,"b":2}
console.log(Object.fromEntries(obj)) //false
注意 Object.entries的反向操作,把array转换为object 。方法可以把键值对列表转化为一个对象,入参可以是一个Map、Set、Array类型,或者其他实现了可迭代协议的可迭代对象。
7. delete 删除对象的属性
const obj={"a":1,"b":2}
console.log(delete obj) // true
8. Object.defineProperty(对象,属性名,属性描述对象)
注意 定义属性,也可以定义Symbol
属性描述对象:writable/value,set/get这两对不能同时出现,默认为false
Object.defineProperty(obj,"aaa",{
configurable:true,
enumerable:true,
writable:false,
value(a,b){
console.log(a+b)
}
})
obj.aaa(1,2); //3
9. Object.defineProperties()定义属性
注意 可定义多个,默认为false,可定义Symbol
Object.defineProperties(obj,{
c:{
writable:true,
value:30
},
d:{
configurable:true,
value:4
},
e:{
enumerable:true,
value:5
}
})
const sym=Symbol();
obj[sym]=10;
console.log(obj);
10. Object.getOwnPropertyNames(obj) 获取对象的所有属性名,返回属性名组成的数组,Symbol不能获取
11. Object.getOwnPropertySymbols(obj) 获取对象的所有Symbol属性名,返回属性名组成的数组
const arr=Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));
console.log(arr);
const arr=[...Object.getOwnPropertyNames(obj),...Object.getOwnPropertySymbols(obj)];
console.log(arr)
12. Object.getOwnPropertyDescriptor(obj,“d”); 获取属性的描述对象
const obj={"a":1,"b":2}
Object.getOwnPropertyDescriptor(obj,"d")
// 打印输出: {value: 1, writable: true, enumerable: true, configurable: true}
13. Reflect.ownKeys(obj); 获取到对象所有属性和方法名,包括Symbol属性
const obj={"a":1,"b":2}
Reflect.ownKeys(obj)
// 打印输出: (2) ['a', 'b']
14. Reflect.defineProperty 定义属性,默认为false,可定义Symbol,与Object.defineProperty相同
15. Reflect.deleteProperty(obj,“c”); 删除
const obj={"a":1,"b":2}
Reflect.deleteProperty(obj,"b")
16. Object.freeze(obj);冻结 不能修改属性,不能删除属性,不能添加属性
const obj={"a":1,"b":2}
Object.freeze(obj)
17. Object.isFrozen(obj) 判断对象是否被冻结
const obj={"a":1,"b":2}
Object.isFrozen(obj)
18. Object.seal(obj); 可以修改,不能删除,不能添加属性
const obj={"a":1,"b":2}
Object.seal(obj)
19. Object.isSealed(obj) 判断是否使用seal
const obj={"a":1,"b":2}
Object.isSealed(obj)
20. Object.preventExtensions(obj); 可以修改,可以删除,但是不能添加新属性,不能扩展
const obj={"a":1,"b":2}
Object.preventExtensions(obj)
21. Object.isExtensible(obj) 判断是否可以扩展
const obj={"a":1,"b":2}
Object.isExtensible(obj)
22. Object.getOwnPropertyDescriptors(obj) 获取对象中所有属性的描述对象列表对象
const obj={"a":1,"b":2}
Object.getOwnPropertyDescriptors(obj)
23. Object.getPrototypeOf(obj) 获取obj对象的原型链
const obj={"a":1,"b":2}
Object.getPrototypeOf(obj)
24. Object.setPrototypeOf(o1,o) 设置对象的原型链
// 将a的原型链设置为b
Object.setPrototypeOf(a,b)
25. 判断对象的对象属性是否包含这个属性名
console.log(o1.hasOwnProperty("b"))
console.log(Object.hasOwn(o1,"b"))
更多推荐
所有评论(0)