一,原型相关
- Object.getPropertyOf(obj) - 获取对象obj的原型对象
- Object.setPrototypeOf(obj, prototype) - 为obj对象设置原型prototype
- obj2.isPrototypeOf(obj1) - 判断对象obj1是否在obj2的原型链上(obj2是否为obj1的原型)
二,属性操作相关
- hasOwnProperty(key) - 判断对象是否有key属性,返回true或false
- propertyIsEnumerable(key) - 判断对象的属性key是否可枚举(for...in可以遍历到)
- getOwnPropertyNames(obj) - 获取对象obj的所有属性名key的列表,返回数组
- defineProperty(obj, attrName, description) - 设置或修改对象obj的属性,并返回该对象。description参数为当前属性的描述符。包含值value
是否能被赋值writable(默认false)
是否可枚举enumerable(默认false)
描述符是否能改变configurable(默认false)
var p1 = {name: '张三'};
Object.defineProperty(p1, 'age', {
value: 18,
writable: true,
enumerable: true
});
console.log(p1); // {name: '张三', age: 18}
- defineProperties(obj, attrDescriptions) - 定义对象的多个属性,用法同defineProperty
- getOwnPropertyDescriptor(obj, 'property1') - 获取对象obj的指定属性的属性描述符
三,遍历相关
- Object.keys(obj) - 查询对象obj的所有属性名称列表,并返回
- Object.values(obj) - 查询对象obj的所有属性值列表,并返回
- Object.entries(obj) - 查询对象obj的所有键值对的列表,并返回(二维数组)
var obj = {
name: '张三',
age: 18
};
console.log(Object.entries(obj)); // [['name', '张三'], ['age', 18]]
四,常用工具方法
- Object.assign(target, ...sources) - 将一个或多个对象的属性复制到另一个目标对象中
- Object.is(val1, val2) - 比较两个任意类型的值是否恒等于(与 === 一致)
- toString() - 将对象转换成字符串
- toLocalString() - 返回对象的本地化字符串,为Date和Number对本地化做了定制,可以将日期、数字做本地化转换(对象调用此方法和toString()效果是一样的)
- 了解valueOf() - 将一个对象值转换为原始值(通常js自己调用,不需要手动调用)
const obj = { name: '张三' };
console.log(obj.valueOf() === obj); // true
其他详细方法,可查看API
MDNhttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object