美文网首页
[JS]ES6新的数据类型Symbol

[JS]ES6新的数据类型Symbol

作者: 泉落云生 | 来源:发表于2018-04-27 20:27 被阅读53次

Symbol 数据类型是表示独一无二的值。

1. Symbol函数前不能使用new命令,是一个原始类型的值,不是对象。
var sy1 = Symbol();
var sy2 = Symbol();
console.log(sy1 === sy2)      //false

var sy1 = Symbol('foo');
var sy2 = Symbol('foo');
console.log(sy1 === sy2)      //false
2. Symbol值作为对象属性名时,不能用点运算符。

不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回。
但有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有Symbol属性名。

var mySymbol = Symbol();
// 第一种写法
var a1 = {};
a1[mySymbol] = 'Hello!';
console.log(a1[mySymbol])
        
// 第二种写法
var a2 = {
  [mySymbol]: 'Hello!'
};
console.log(a2[mySymbol])
        
// 第三种写法
var a3 = {};
Object.defineProperty(a3, mySymbol, { value: 'Hello!' });
console.log(a3[mySymbol])
3. Symbol.for(),Symbol.keyFor()

首先在全局中搜索有没有以该参数作为名称的Symbol值,如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。和直接的Symbol就点不同了。

var s1 = Symbol.for('foo');
var s2 = Symbol.for('foo');

s1 === s2 // true

Symbol.keyFor方法返回一个已登记的Symbol类型值的key。实质就是检测该Symbol是否已创建。

var s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"

var s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined

内置的Symbol值
つづく...

总结

  1. 不能使用new命令,是一个原始类型的值,不是对象。
  2. 作为对象属性名时,不能用点运算符。只能被Object.getOwnPropertySymbol()获取。
  3. Symbol.for(),Symbol.keyFor()
  4. 内置的Symbol属性方法。

相关文章

  • 前端资料

    ES6新数据类型 Symbol . js变量提升函数提升 js this js 原型及原型链理解 new做了什么 ...

  • js中的基本数据类型

    JS中的数据类型 undefined null string boolean number symbol(ES6)...

  • ES6之Symbol介绍与使用

    Symbol简介 ES6新加入了一种原始数据类型Symbol,表示独一无二的值,这是js的第七种数据类型,前六种是...

  • JS里的数据类型

    JS中有7种数据类型: number, string, boolean, symbol(es6加的), undef...

  • ES6 中的 Symbol

    JavaScript 之 Symbol Symbol是什么 Symbol是ES6中新引入的一种基本数据类型。Sym...

  • ECMAScript6--10.Symbol用法

    Symbol(ES6中新增加的数据类型) 1.Symbol的概念* 这种数据类型提供独一无二的值;比如:在js中声...

  • ES6读书笔记

    es6又引入了一种新的数据类型 Symbol es6前有6钟数据类型 :undefined number str...

  • 一篇读懂js隐式转换规则

    一、前言 js的数据类型总共六种(不考虑ES6的Symbol数据类型),分别是:Number、String、Boo...

  • Symbol

    Symbol ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.Symbol值通过Symbol函数生...

  • Symbol And Iterator

    Symbol Symbol是es6新引入的一种数据类型,表示一个独一无二的值,Symbol 值通过Symbol函数...

网友评论

      本文标题:[JS]ES6新的数据类型Symbol

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