JavaScript-ES6 Symbol基本了解

问题:我们希望对象的属性名是唯一的,但是对象的属性名都是字符串,我们拿到别人的对象时,可能会想为其增添一个方法,这样可能会与本就存在的方法名起冲突。

解决方案:ES6引入一种新的数据类型,叫Symbol,作为第七种数据类型。

示例:

let s1 = Symbol('bar') // Symbol()函数括号内可以放置对s1的描述

type of s1 // 'symbol'

let s2 = Symbol('bar')

s1 === s2 // false
// 虽然描述都是一样的 但并不相等 每个symbol变量都是独一无二的

上面的代码中:s1由函数Symbol()产生,可见,这里我们没有在前面加new,这是因为Symbol产生的不是对象,而是一种单独的原始类型的值,Symbol类型类似于字符串类型。

应用:

let s1 = Symbol('foo') 

let a = {
    
    }
a[s1] = 'hello'
// 或者
let a = {
    
    
	[s1] : 'hello'
}

let a = {
    
    
	[s1](arg) {
    
    
		...
	}	
}
// 相当于
let a = {
    
    
	[s1] : function (arg) {
    
    
	...
	}
}
// 调用
a[s1](123)

猜你喜欢

转载自blog.csdn.net/weixin_45543674/article/details/118498822