美文网首页
Object 对象

Object 对象

作者: 行走的蛋白质 | 来源:发表于2019-08-01 21:27 被阅读0次

一. 对象的方法

  • getOwnPropertyDescriptor
    获取属性的描述对象
let obj = {name: 'protein', color: 'white'}

console.log(Object.getOwnPropertyDescriptor(obj, 'name'))
/* {
    value: "protein", // 值
    writable: true, // 是否可修改
    enumerable: true, // 是否可枚举 --- 是否可通过 for in 来循环,通过 defineProperty 定义的属性默认为 false
    configurable: true // 是否可配置 --- 常用是否可以删除
} */

console.log(Object.getOwnPropertyDescriptor([1, 2], 'length')) //对比加强理解

  • defineProperty
    修改属性
Object.defineProperty(obj, 'name', {
    value: 'potato',
    writable: false,
    enumerable: false,
    configurable: false
})

console.log(obj)
// {color: "white", name: "potato"}

delete obj.name
console.log(obj.name)
// potato

obj.name = 'tomato'
console.log(obj.name)
// potato

for(let v in obj) {
    console.log(v)
}
// color

二. 遍历对象的方法

const obj = { 'name': "protein", 'age': '18', 'sex': 'male' };
Object.prototype.pro1 = function() {};//在原型链上添加属性
Object.defineProperty(obj, 'country', {
  enumerable: true, //可枚举
  value: 'china'
});
Object.defineProperty(obj, 'nation', {
  enumerable: false //不可枚举
});
Object.defineProperty(obj, 'otherInfo', {
  enumerable: true //可枚举
});
obj.otherInfo = 'otherInfo';
const sym = Symbol('sym');
obj[sym] = 'sym';
const prototypeSym = Symbol('prototypeSym');
Object.prototype[prototypeSym] = 'prototypeSym';
    1. for...in, 遍历对象自有以及原型上的可枚举属性 ( 不含Symbol属性 ) , 先遍历自有属性, 然后在遍历原型上的属性
for (var index in obj) {
  console.log('key=', index, 'value=', obj[index])
}
for...in
  • Object.keys(), 遍历对象自有可枚举属性 ( 不含Symbol属性 ) , 返回一个 key 值组成的数组, 不包含原型上的属性
Object.keys(obj).forEach(function(key) {
  console.log(key, obj[key])
});
Object.keys()
  • Objcet.getOwnPropertyNames(), 输出对象自身的可枚举和不可枚举属性的数组 ( 不含Symbol属性 ) , 不输出原型链上的属性
Object.getOwnPropertyNames(obj).forEach(function(key) {
  console.log(key, obj[key])
});
Objcet.getOwnPropertyNames()
  • Reflect.ownKeys(), 返回对象自身的所有属性, 不管属性名是 Symbol 或字符串, 也不管是否可枚举
Reflect.ownKeys(obj).forEach(key => {
    console.log(key, obj[key])
})
Reflect.ownKeys()

相关文章

网友评论

      本文标题:Object 对象

      本文链接:https://www.haomeiwen.com/subject/dfqhdctx.html