ES6-学习之路-04

149 阅读2分钟

ES6-学习之路-04

对象key值构建

有时候我们会在后台定义key值,而不是我们前台定义好的,这时候我们如何构建我们的key值。比如我们在后台取了一个key值,然后可以用[ ] 的形式,进行对象的构建。

/**key值构建 */
let key = 'name'
let obj = {
    [key]: 'duming'
}
console.log(obj['name'])

自定义对象方法

对象方法就是把兑现中的属性,用匿名函数的形式编程方法。

/**自定义对象方法 */
let objFun = {
    add: (a, b) => {
        return a + b
    }
}
console.log(objFun.add(3, 4))

Object.is( ) 对象比较

对象的比较方法,以前进行对象值的比较,经常使用===来判断,比如下面的代码:

    /**对象比较 */
let obj1 = { name: 'duming' }
let obj2 = { name: 'duming' }
console.log(obj1.name === obj2.name)
console.log(Object.is(obj1.name, obj2.name))
console.log(Object.is(obj1, obj2))
    /**
     * output: true true false
     */

====表示值相等,Object.is()表示严格相等。

Object.assign( )合并对象

    /**合并对象 */
let obja1 = { tel: '187' }
let obja2 = { address: 'js' }
let obja3 = { age: '20' }
let objA = Object.assign(obja1, obja2, obja3)
console.log(objA)
    /**
     * {tel: "187", address: "js", age: "20"}
     */

Set和WeakSet数据结构

首先看set的声明

let setdemo1 = new Set(['apple', 'pear'])
console.log(setdemo1)

Set和Array 的区别是Set不允许内部有重复的值,如果有只显示一个,相当于去重。虽然Set很像数组,但是他不是数组。
增删改查示例代码:

/**set的声明 */
let setdemo = new Set(['apple', 'pear'])
console.log(setdemo)
    /**
     * Set(2) {"apple", "pear"}
     */
    /**set的增删改查 */
setdemo.add('orange')
setdemo.delete('apple')
console.log(setdemo.has('apple'))
console.log(setdemo.has('pear'))

/**循环 foreach*/
setdemo.forEach(item => {
    console.log(item)
})

/**
 * 输出
 * false
pear
orang
 */

WeakSet

跟Set相比,WeakSet的特点如下:

  • 作为Object的容器,而不是简单类型
  • WeakSet中的对象如果没有其他地方引用,会被垃圾回收吸收掉。
/**WeakSet */
var ws = new WeakSet();
var windows = {};
var foo = {};

ws.add(windows);


ws.has(windows); // true
ws.has(foo); // false, foo has not been added to the set

ws.delete(windows); // removes window from the set
ws.has(windows); // false, window has been removed

Map数据结构

在一些构建工具中是非常喜欢使用map这种数据结构来进行配置的,因为map是一种灵活,简单的适合一对一查找的数据结构。我们知道的数据结构,已经有了json和set。那map有什么特点。

let json = {
    name: 'du',
    age: 20
}
console.log(json)

/**map数据结构 */
let map1 = new Map
map1.set('name', 'du2')
map1.set('age', 20)
map1.set('json', json)
console.log(map1)

/**
 * 输出
 * {name: "du", age: 20}
Map(3) {"name" => "du2", "age" => 20, "json" => {…}}
 */

Map增删改查

map的增删改查语句如下:

map1.delete('json')
map1.forEach(item => {
    console.log(item)
})
console.log(map1.get('json'))

参考链接

技术胖老师blog