美文网首页
Symbol(ES6)

Symbol(ES6)

作者: 李莫愁_melissa | 来源:发表于2017-09-20 17:55 被阅读0次

Symbol类型:Symbol是ES6新出的基本类型

1,每一个Symbol的值都是唯一的,不与其他的相等。

let symbol1 = Symbol();

let symbol2 = Symbol();

console.log( symbol1 === symbol2 );  //false

但如果你直接将s1赋值给s2,就是所谓的浅拷贝,会相等。

2,Symbol充当唯一对象的属性(key)

letmyObject = {

    publicProperty:'Value of myObject[ "publicProperty" ]'

};

myObject[ symbol1 ] ='Value of myObject[ symbol1 ]';

myObject[ symbol2 ] ='value of myObject[ symbol1 ]';

console.log(myObject);

//publicProperty:"Value of myObject[ "publicProperty" ]"

//Symbol():"Value of myObject[ symbol1 ]"

//Symbol():"value of myObject[ symbol1 ]"

也就是说以不同Symbol为key,证明Symbol的唯一性。

1)Symbol属性键的值不会再JSON中显示,也不会再for...in 和Object.keys中被枚举出来。

console.log(JSON.stringify(myObject));

//"{"publicProperty":"Value of myObject[ \"publicProperty\" ]"}"

console.log( for(var key in myObject) {

    console.log(key, myObject[key])

})  // publicProperty Value of myObject[ "publicProperty" ]

console.log( Object.keys(myObject) );

///["publicProperty"]

虽然Symbol 键的属性没有在上述案例中出现,这些属性在严格意义上也不是完全私有的。

2)Object.getOwnPropertySymbols提供了一种检索对象的 Symbol键的方法。

concosle.log( myObject[Object.getOwnPropertySymbols(myObject)[0]] )

///"Value of myObject[ symbol1 ]"

3.Symbol被包含在浅拷贝里

var cloneObject = Object.assign( {}, myObject );

console.log( cloneObject )

/// publicProperty:"Value of myObject[ "publicProperty" ]"

/// Symbol():"Value of myObject[ symbol1 ]"

/// Symbol():"value of myObject[ symbol1 ]"

4,正确命名 Symbol

如果你需要额外的语句注释,可以在Symbol上附上一个注释

let leftNode = Symbol('binary left')

console.log(leftNode);

///Symbol(binary left)

(如果两个Symbol有相同的描述,这两个symbol仍不相同)

5.全局Symbol注册表

Symbol注册表,为字符串和Symbol提供了一对一的关系,使用Symbol.for(key) 返回Symbol

let private1 = Symbol.for('fristName');

let private2 = Symbol.for('fristName')

myObject[private1] = '222';

myObject[private2] = '333';

console.log(myObject[private1])

/// 333

由于注册表Symbol的值与字符串有一一对应的关系,可以通过keyFor检索字符串键

console.log( Symbol.keyFor(private1) );

/// "fristName"

..好了好了,还有很多用法:我就是看着这个网址一个一个打下来的

https://my.oschina.net/u/2903254/blog/818796


更新一下:没写明天学什么。。

明天学一下异步加载数据吧。。。。做一个图片懒加载。。。我的服务器咋配不好啊。。。

明天下午要去biu了,害怕玩也玩不好。

相关文章

  • ES6补充以及Node事件轮询

    Symbol es6中新增了symbol类型,symbol类型的值是通过symbol函数生成的,相同symbol函...

  • 深入理解ES6六

    Symbol ES6新增的数据类型Symbol 创建Symbol:通过去全局的Symbol函数创建一个Symbol...

  • es6中的数据类型之symbol

    1. symbol es6中的数据类型有:number, boolean, string, symbol, nul...

  • 2018-08-06 第一天课 ES6前奏

    1.Symbol ES6新增的 数据类型 -基本类型 值是由Symbol 函数 调用产生的 相同的Symbol 函...

  • JavaSctipt基础归纳,以及隐式转换的规则

    原始类型: "symbol" 是ES6,新扩展的原始类型;Symbol,表示独一无二的值。Symbol 值通过Sy...

  • Symbol

    es6新增数据类型 -- 基本类型 值是由symbol函数调用产生的 Symbol的基本用法 Symbol的使用属...

  • ES6 中的 Symbol

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

  • Symbol

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

  • Symbol And Iterator

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

  • Symbol《understanding ECMAScipt6》

    什么是Symbol ES6 新增的类型 原始类型 如何创建Symbol 可以通过new Object( Symbo...

网友评论

      本文标题:Symbol(ES6)

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