【JS】对象常用的方法
1、Object.entries(obj):返回对象内可枚举键值对组成的数组;
const obj = { a: '1', b: 2 };
console.log(Object.entries(obj)); // [ ['a', '1'], ['b', 2] ]
2、Object.keys(obj):返回对象内可枚举属性名组成的数组;
// 简单数组
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// 简单对象
const obj = { a: 1, b: 2 };
console.log(Object.keys(obj)); // [a,b]
3、Object.values(obj):返回对象内可枚举属性值组成的数组;
const obj = { a: 1, b: 2 };
console.log(Object.values(obj)); // [1,2]
4、delete 操作符:用于删除对象的某个属性
let obj = { a: 1, b: 2 };
// delete obj; // 不能直接删除对象,这里会报错
delete obj.a;
console.log(obj);// 输出{b: 2};
5、hasOwnProperty():返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键);
let obj = { a: 1, b: 2 };
console.log(obj .hasOwnProperty('a')); // true
console.log(obj .hasOwnProperty('c')); // false
6、Object.defineProperty() :会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
/*
obj: 要定义属性的对象。
prop: 要定义或修改的属性的名称或 Symbol 。
descriptor: 要定义或修改的属性描述符。
*/
Object.defineProperty(obj, prop, descriptor)
//使用
const obj = {};
Object.defineProperty(obj , 'property', {
value: 1, // value值
});
== 等价于 ==
Object.defineProperty(obj, 'property', {
value: 1, // value值
configurable: false, // 是否可删除
enumerable: false, // 是否可遍历
writable: false, // 是否可修改
});
//所以obj不可修改删除遍历操作,除非把上面的三个属性设置为true
console.log(obj); // { property: 1}
delete object.property // 删除操作,不生效
console.log(obj); // { property: 1}
object.property1 = 23 // 修改操作,不生效
console.log(obj); // { property: 1}
for (let i in obj) { // 遍历操作,不生效
console.log(i); // 无打印
}
注:本文只列出常用的方法