首页>>新闻中心>>ES6学习方法

Symbol()一种的新的数据结构

来源: 本站    发布时间: 2021-02-27 23:11    阅读次数:

let s1 = Symbol()
    let s2 = Symbol()
    console.log(s1 === s2)
    console.log(Object.is(s1, s2))
    let obj = {
        name: "yang"
    }
    let str = "str"
    let s3 = Symbol(obj) //Symbol([object Object])
    let s4 = Symbol(str) //Symbol(str)
    console.log(s4)
    console.log(s3)
    console.log(s3.description)// Symbol的描述信息
    console.log(typeof s3.description)  //string
    let s5 = Symbol.for("foo");
    let s6 = Symbol.for("foo"); // Symbol.for 就是一个全局的环境
    console.log(Symbol.keyFor(s6)) // foo 检查这个Symbol是否全局定义
    console.log(s5 === s6) // true
    function x() {
        return Symbol.for("foo")
    }
    let y  = Symbol.for("foo")
    console.log(x() === y) //  true
    const grade = {
        张三: {address: "四川成都金牛区", tel: "13693467587"},
        李四: {address: "四川成都青羊区", tel: "13693467588"},
        李四: {address: "四川成都高新区", tel: "13693467589"},
    }
    console.log(grade)

    let stu1 = Symbol("李四")
    let stu2 = Symbol("李四")
    const grade1 = {
        [stu1]: {address: "四川成都青羊区", tel: "13693467588"},
        [stu2]: {address: "四川成都高新区", tel: "13693467589"},
    }
    console.log(grade1)
    let sym = Symbol("design")
    class User {
        constructor(name) {
            this.name = name
            this[sym] = "design.cn"
        }
        getName() {
            return this.name + "的网站" + this[sym]
        }
    }
    const user = new User("严钢")
    console.log(user.getName())
    for (let key in user) {
        console.log(key)  //name
    }
    for (let key of Object.keys(user)) {
        console.log(key)  // name
    }
    for (let key of Object.getOwnPropertySymbols(user)) {
        console.log(key) //Symbol("design")
    }
    for (let key of Reflect.ownKeys(user)){
        console.log(key) //Symbol("design") name
    }
    const  shapeType = {
        // triangle : "Triangle",
        // circle : "Circle"
        triangle : Symbol(),  //Symbol()
        circle :Symbol()
    }
    //魔术字符串
    function  getArea (shape) {
        let area = 0 ;
        switch (shape) {
            case shapeType.triangle:
                area = 1
                break
            case shapeType.triangle:
                area = 2
                break
        }
        return area
    }
一起设计吧
上一篇: ES5类的继承
下一篇: ES6 Set数据结构
BACK