美文网首页
es6-symbol的用法

es6-symbol的用法

作者: 王童孟 | 来源:发表于2018-09-18 11:11 被阅读0次

Symbol数据类型

Synmbol 数据类型提供一个独一无二的值。

Symbol的声明

{
  // 声明
  let a1=Symbol(); // 这里没有 new
  let a2=Symbol();
  console.log(a1===a2); // false
  let a3=Symbol.for('a3'); // 返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol
  let a4=Symbol.for('a3');
  console.log(a3, a4, a3===a4); // Symbol(a3) Symbol(a3) true
}

Symbol的使用

根据规范,对象属性键只能是string类型或symbol类型,不能是number、boolean,只有string和symbol两种类型。

{
  let a1=Symbol.for('abc');
  let obj={
    [a1]:'123', 
    'abc':345,
    'c':456
  };
  console.log('obj',obj); // {abc: 345, c: 456, Symbol(abc): "123"}
  // 注意:对象中,symbol 做属性值,通过 for in 和 for of 拿不到属性值
  for(let [key,value] of Object.entries(obj)){
    console.log('let of',key,value); // abc 345 // c 456
  }

  Object.getOwnPropertySymbols(obj).forEach(function(item){ // api 结果是数组
    console.log(obj[item]); // 123
  })

  Reflect.ownKeys(obj).forEach(function(item){ // api 返回数组包含symbol和非symbol
    console.log('ownkeys',item,obj[item]); // abc 345 c 456 Symbol(abc) 123
  })
}

相关文章

  • es6-symbol的用法

    Symbol数据类型 Synmbol 数据类型提供一个独一无二的值。 Symbol的声明 Symbol的使用 根据...

  • es6-Symbol

    title: es6-Symboldate: 2018-02-07 22:40:00tags: es6 前言 突然...

  • ES6-Symbol

    1.概括 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对...

  • ES6-Symbol

    ES6 中引入了一种新的原始数据类型 Symbol,表示独一无二的值。引入的原因:保证每个属性名都是独一无二的,从...

  • ES6-Symbol

    初识Symbol ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语...

  • ES6-Symbol

    创建Symbol实例let s1 = Symbol()let s2 = Symbol('another symbo...

  • ES6-Symbol

    1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对...

  • ES6-Symbol

    ES5中对象的属性名都是字符串,容易造成重名,污染环境Symbol: 概念:ES6中的添加了一种原始数据类型sym...

  • es6-Symbol数据类型

    Symbol Symbol 是一个符号对象,是es6新添加的数据类型,通过Symbol()可以得到一个唯一的值,所...

  • ES-6--数据结构

    Set的用法,WeakSet的用法,Map的用法,WeakMap的用法 Set()基本用法 Set的add,del...

网友评论

      本文标题:es6-symbol的用法

      本文链接:https://www.haomeiwen.com/subject/tkaynftx.html