- 首先举个例子当我们让别人拿一个东西,你会说把电脑拿过来
- 然后如果那里有10种电脑,他就不知道拿哪个了
- 这时你就会加修饰词,把15.6寸开机的苹果电脑拿过来
下面来说symbol,symbol不是js中的构造函数,所以建立时不用像array去new
let ab = Symbol();
let edu = Symbol();
conslose.log(hd == edu) //永远为false
let ab = Symbol();
let edu = Symbol();
conslose.log(ad == edu) //永远为false
// 这时没有用的 ad.name = undegind , ad = false
ad.name = '张三'
symbol的()内可以添加描述,就像开始举例子对电脑的描述
let ab = Symbol('symbol');
conslose.log(ab) //输出Symbol('symbol')
可以利用tostring()打印为字符串
let ab = Symbol('symbol');
conslose.log(ab.tostring()) //输出'Symbol('symbol')'
系统也内置了字符串属性decription(由系统提供,不支持自己定义)
let ab = Symbol('symbol');
conslose.log(ab.decription) //输出'symbol'
这样就获取到了描述
另一种定义方法,这种方法系统会全局创建你的symbol,如果描述相同,他俩会完全相同
let ab = Symbol.for('symbol');
let bc = Symbol.for('symbol');
conslose.log(ab===bc) //输出true
let ab = Symbol.for('symbol');
let bc = Symbol.for('sym');
conslose.log(ab===bc) //输出false
这种方法声明的需要用keyfor属性取得描述值
let ab = Symbol.for('symbol');
let ac = Symbol.('symbol');
conslose.log(Symbol.keyFor(ab)) //输出'symbol'
conslose.log(Symbol.keyFor(ac)) //输出'undegin'
使用实例