
Symbol 是一种基本数据类型。 Symbol() 函数会返回 symbol 类型的值。该类型具有静态属性和静态方法。
每个从 Symbol() 返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符。
1、对象:创建私有成员、防止属性名冲突。
2、Symbol的值是唯一的、独一无二的,不会重复。
注意:不支持语法 new Symbol() 。
Symbol([description])
description:对symbol的描述,可用于调试但不是访问symbol本身。
作用:使用给定的key搜索现有的symbol。【key表示symbol中的description】
返回值:如果找到,返回该symbol;否则将创建一个新的symbol,key作为description,添加到注册表中并返回。
作用:从symbol注册表中,返回指定symbol的description,没有则返回undefined。
返回值:如果有description,返回;否则返回undefined。
注意:
1、如果使用 Symbol() 定义的symbol,则不会添加到注册表中;使用 Symbol.for() 定义的symbol则会添加到注册表中。
2、 Symbol.for(key) 和 Symbol.keyFor(sym) 都是在 Symbol注册表 中进行查找。【不会找到 Symbol() 定义的symbol】
注意:
1、对象的属性要使用变量值,必须使用 [变量名]
2、Symbol类型作为对象的私有属性,通过 for/in 、 for/of 无法遍历,必须使用 Object.getOwnPropertySymbols(对象) 或 Reflect.ownKeys(对象) 进行遍历
如果你的图线都在同一个图层,那么可以直接用鼠标右键点击图线区域,在d出的对话框中选择 New Legend,【注意,一定要在图线区域内点击鼠标右键】如下图左边所示;或者在工具栏上点击两个并列的图例图标,如下图右边所示:
这样添加的图例会直接添加在原图例下方,与原图例成为一体。
如果你的图线不在同一个图层,也可以用同样的方法添加,但是这样添加的图例是在当前图层,跟原图例是分开的,不是一体的。如果想在原图例下添加新图例,可在图例上点击右键,在d出的对话框中选择Properties,【注意,一定要先点击原图例,使图例外框在选中状态。一定要选中原图例,再点鼠标右键。『因为 Origin在不同的状态下点击右键,d出的对话框是不同的』,再次强调】如下图所示:
在d出的对话框中手动添加图例,如下图所示:
针对唯一性,给object添加属性和方法1、当你向一个已有的对象game中添加方法的时候,不清楚game中是否有名为up的方法。
此时用symbol
let obj = {
up:Symbol(),
down:Symbol()
}
自己声明的对象,名字肯定不会重复,并声明up和down的值都是Symbol类型的值
game[obj.up] = function(){}
game[obj.down] = function(){}
2、直接给对象增加唯一的名字
let obj = {
name:'刘莉',
[Symbol('say')]:function(){} //Symbol('say')是一个动态的值,所以要加[]
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)