重学 ES6 Symbol
栏目: JavaScript · 发布时间: 6年前
内容简介:ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。是JavaScript第7种原始数据类型。前6种是:undefined,Null,Boolean,String,Number,Object。Symbol值,通过Symbol函数生成。也就是说,对象的属性名现在有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。只要属性名属于Symbol类型,就是独一无二的,可以保证不会与其他属性名产生冲突。Symbol 函数钱不能使用 new ,Symbol不是对象,所以,也不能添加属性。
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。是JavaScript第7种原始数据类型。前6种是:undefined,Null,Boolean,String,Number,Object。
Symbol值,通过Symbol函数生成。也就是说,对象的属性名现在有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。只要属性名属于Symbol类型,就是独一无二的,可以保证不会与其他属性名产生冲突。
let s = Symbol(); typeof s // symbol 复制代码
Symbol 函数钱不能使用 new ,Symbol不是对象,所以,也不能添加属性。基本上,他是一种类似于字符串的数据类型。
作为属性名的Symbol
由于每一个Symbol值都是不想等的,这意味着Symbol值可以作为标识符用于对象的属性名,保证不会出现同名属性。对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心修改或者覆盖。
var mySymbol = Symbol();
// 第一种写法
var a = {};
a[mySymbol] = 'Hello';
// 第二种写法
var a = {
[mySymbol]:'Hello';
}
// 第三种写法
var a = {};
Object.defineProperty(a,mySymbol,{value:'Hello'});
复制代码
在对象内部,使用Symbol值定义属性时,Symbol值必须放在方括号中。
消除魔术字符串
function getArea(shape,options){
var area = 0;
switch (shape) {
case: 'Trangle'://魔术字符串
area = 0.5 * options.width * options.height;
break;
/* more */
}
return area;
}
getArea('Trangle', {width:100,height:100}); //魔术字符串
复制代码
字符串 Trangle 就是一个 魔术字符串。多次出现,与代码强耦合。不利于将来的修改和维护。
常用的消除魔术字符串的方法就是将其写成一个变量
var shapeType = {
triangle: 'Trangle'
}
function getArea(shape,options){
var area = 0;
switch (shape) {
case: shapeType.trangle://魔术字符串
area = 0.5 * options.width * options.height;
break;
/* more */
}
return area;
}
getArea(shapeType.trangle, {width:100,height:100});
复制代码
属性名的遍历
Symbol 作为属性名,该属性不会出现在 for .. in , for ... of 循环中,也不会被 Object.keys(),Object.getOwnPropertyNames()返回。但是它也不是私有属性。有一个Object.getOwnPropertySymbols方法返回指定对象的所有symbol属性名,是一个数组,成员是当前对象所有用作属性名的Symbol值。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning JavaScript
Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99
As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!