这句话:由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。
使用了Symbol:
let sym = Symbol();
let a = {
[sym]: 'Hello'
}
不使用Symbol:
let b = {
str: 'hello'
}
b.str属性同名就会覆盖,a[sym]属性同名也还是会覆盖,当他们出现同名属性的时候都会覆盖。所以说:Symbol保证不会出现同名属性体现在哪了??
比如你添加了一个
Symbol('toString')
方法,然后给别人用。别人也添加了一个Symbol('toString')
方法,大家都不冲突。