Object 对象

2019-08-01  本文已影响0人  行走的蛋白质

一. 对象的方法

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')) //对比加强理解

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';
for (var index in obj) {
  console.log('key=', index, 'value=', obj[index])
}
for...in
Object.keys(obj).forEach(function(key) {
  console.log(key, obj[key])
});
Object.keys()
Object.getOwnPropertyNames(obj).forEach(function(key) {
  console.log(key, obj[key])
});
Objcet.getOwnPropertyNames()
Reflect.ownKeys(obj).forEach(key => {
    console.log(key, obj[key])
})
Reflect.ownKeys()
上一篇 下一篇

猜你喜欢

热点阅读