对象

2020-09-26  本文已影响0人  懂会悟

1、属性的简洁表示法

ES6 允许直接写入变量和函数,作为对象的属性和方法。此时,属性名为变量名, 属性值为变量的值。

// 对象
const foo = 'bar'
const baz = {foo}
baz // {foo: "bar"}

// 等同于
const baz = {foo: foo}
function f(x, y) {
  return {x, y}
}

// 等同于
function f(x, y) {
  return {x: x, y: y}
}
const o = {
  method() {
    return "Hello!"
  }
}

// 等同于

const o = {
  method: function() {
    return "Hello!"
  }
}

2、属性的可枚举性与遍历

属性的可枚举性

对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。描述对象的enumerable属性,称为”可枚举性“,如果该属性为false,就表示'不可枚举'某些操作会忽略当前属性

有四个操作会忽略enumerable为false的属性

属性的遍历

ES6 一共有5种方法可以遍历对象的属性

const obj = {name: 'tom', age: 18

Reflect.ownKeys(obj)

// ["name", "age"]

3、对象的新增方法

1、Object.assign()

Object.assign():用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。返回目标对象

let target = { name: 'Tom', age: 20 }
let source = { work: 'engineer' }
let result = Object.assign(target, source)

console.log(target)
// { name: 'Tom', age: 20, work: 'engineer' }
console.log(source)
// { work: 'engineer' }
console.log(result)
// { name: 'Tom', age: 20, work: 'engineer' }

2、Object.is()

Object.is():用于判断两个值是否相等,包含number、string、Object.返回布尔值

let target = { name: 'Tom', age: 20 }
let source = { work: 'engineer' }
let result = Object.assign(target, source)
console.log(Object.is(target, result))
// true-

3、Object.keys()、Object.values()、Object.entries()
let info = { name: 'Tom', age: 18 }
console.log(Object.keys(info))
// [ 'name', 'age' ]
console.log(Object.values(info))
// [ 'Tom', 18 ]
console.log(Object.entries(info))
// [ [ 'name', 'Tom' ], [ 'age', 18 ] ]

上一篇下一篇

猜你喜欢

热点阅读