资讯专栏INFORMATION COLUMN

【ES6入门08】:Symbol用法

LeexMuller / 3279人阅读

摘要:是新增的数据类型,它提供独一无二的值声明,声明的变量是唯一的接收一个参数,作为值使用方法时,会检查这个值在全局是否注册如果注册过就返回这个值,否则调用生成新的独一无二的值在对象中声明类型的属性的遍历或者循环拿不到以作为属性的值只拿到以作为属

1.Symbol是ES6新增的数据类型,它提供独一无二的值

{
    // 声明,Symbol声明的变量是唯一的
    let a1 = Symbol();
    let a2 = Symbol();
    console.log(a1 === a2); // false

    // Symbol.for()接收一个参数,作为key值
    // 使用for方法时,会检查这个key值在全局是否注册
    // 如果注册过就返回这个值,否则调用Symbol生成新的独一无二的值
    let a3 = Symbol.for("a3");
    let a4 = Symbol.for("a3");
    console.log(a3 === a4); // true
}

2.在对象中声明Symbol类型的属性

{
    let a1 = Symbol.for("abc");
    let obj = {
        [a1]: "123",
        "abc": "345",
        "df": "456",
    };
    console.log(obj); // {abc: "345", df: "456", Symbol(abc): "123"}
}

3.Symbol的遍历

{
    let a1 = Symbol.for("abc");
    let obj = {
        [a1]: "123",
        "abc": 345,
        "df": 456,
    };
    // let of(或者for in)循环拿不到 以Symbol作为属性的值
    for (let key of Object.keys(obj)) {
        console.log(key); // abc  df
    }

    // 只拿到以Symbol作为属性的值,getOwnPropertySymbols返回一个数组
    Object.getOwnPropertySymbols(obj).forEach(function (item) {
        console.log(obj[item]); // 123
    });

    // 对象全部属性和值都拿到,包括Symbol。Reflect.ownKeys返回一个数组
    Reflect.ownKeys(obj).forEach(function (item) {
        console.log(item, obj[item]); // abc 345  df 456  Symbol(abc) "123"
    });
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98663.html

相关文章

  • ES6简单总结(搭配简单的讲解和小案例)

    摘要:方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的方法类似。不可以当作构造函数,也就是说,不可以使用命令,否则会抛出一个错误。本身是一个构造函数,用来生成数据结构。返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。 在学习es6的过程中,为了方便自己复习,以及查看,对api做了一个极简用例介绍。如有错误多多指正。 一 let和const 1.let (1)一个大...

    joyqi 评论0 收藏0
  • ES6入门之对象的扩展

    摘要:循环遍历对象自身的和继承的可枚举属性不含属性。返回一个数组,包含对象自身的所有属性的键名。目前,只有对象方法的简写法可以让引擎确认,定义的是对象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 属性的简洁表示法 在ES6中 允许直接写入变量和函数,作为对象的属性和方法,使得代码的书写更为简洁。...

    RiverLi 评论0 收藏0
  • ES6入门之对象的扩展

    摘要:属性的简洁表示法在中允许直接写入变量和函数,作为对象的属性和方法,使得代码的书写更为简洁。循环遍历对象自身的和继承的可枚举属性不含属性。返回一个数组,包含对象自身的所有属性的键名。 showImg(https://segmentfault.com/img/remote/1460000019259004?w=1282&h=1920); 1. 属性的简洁表示法 在ES6中 允许直接写入变量...

    AWang 评论0 收藏0
  • ES6入门之对象的新增方法

    showImg(https://user-gold-cdn.xitu.io/2019/5/22/16adcec448a45d82); 1. Object.is() 用来解决在ES5中 两种相等运算符的缺点。用来比较两个值是否严格相等,行为和(===)基本一致。 在ES5中判断两个值是否相等,只能用(==)相等运算符和(===)严格相等运算符,但是这两货都有缺点,前者 两边的值都会转换数据类型,...

    zhou_you 评论0 收藏0

发表评论

0条评论

LeexMuller

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<