Object.keys()、Object.defineProperty()

67 阅读1分钟

Object.keys()

Object.keys() 方法返回一个所有元素为字符串的数组

Object.keys(obj)

  • 效果类似 for…in
// 用于获取对象自身所有的属性
var obj = {
    id: 1,
    pname: '小米',
    price: 1999,
    num: 2000
};
var arr = Object.keys(obj);
console.log(arr); // ["id", "pname", "price", "num"]
arr.forEach(function(value) {
    console.log(value);
})

Object.defineProperty()

Object.defineProperty() 定义新属性或修改原有的属性。

Object.defineProperty(obj, prop, descriptor)

  • obj:必需。目标对象
  • prop:必需。需定义或修改的属性的名字
  • descriptor:必需。目标属性所拥有的特性
  • Object.defineProperty() 第三个参数 descriptor 说明:
    • value: 设置属性的值
    • writable: 值是否可以重写。true | false
    • enumerable: 目标属性是否可以被枚举。true | false
    • configurable: 目标属性是否可以被删除或是否可以再次修改特性 true | false
var obj = {
    id: 1,
    pname: '小米',
    price: 1999
};
Object.defineProperty(obj, 'address', {
    value: '中国山东蓝翔技校xx单元',
    // 如果只为false 不允许修改这个属性值 默认值也是false
    writable: false,
    // enumerable 如果值为false 则不允许遍历, 默认的值是 false
    enumerable: false,
    // configurable 如果为false 则不允许删除这个属性 不允许在修改第三个参数里面的特性 默认为false
    configurable: false
});