Symbol 详解与用法

前言:

ES5中对象的属性名都是字符串,容易造成重名,污染环境

一、什么是 Symbol?

Symbol 是 ES6 中引入的一种新的基本数据类型,用于表示一个独一无二的值。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。


二、Symbol 的特点

  1. Symbol属性对应的值是唯一的,解决命名冲突问题
let symbol = Symbol("one")
let symbol1 = Symbol("one")
console.log(symbol)
// 结果:Symbol("one")
  1. Symbol值不能与其他数据进行计算,包括同字符串拼串
let a = Symbol()
let b = a+1
console.log(b)
// 结果:报错
  1. for in, for of遍历时不会遍历symbol属性。
let symbol = Symbol();
let obj = {};
obj[symbol] = 'hello';

for(var i in obj){
	console.log(obj[i])
}
// 结果:报错

三、Symbol 的使用

  1. 调用Symbol函数得到symbol值
let symbol = Symbol();
let obj = {};
obj[symbol] = 'hello';

for(var i in obj){
	console.log(obj[i])
}
// 结果:报错
  1. 传参标识
let symbol = Symbol('one');
let symbol2 = Symbol('two');
console.log(symbol);// Symbol('one')
console.log(symbol2);// Symbol('two')
  1. 内置Symbol值
  • 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语言内部使用的方法。
    • Symbol.iterator
  • 对象的Symbol.iterator属性,指向该对象的默认遍历器方法(后边讲)
  1. symbol != symbol symbol是唯一的
let one = Symbol("one")
let two = Symbol("one")

console.log(one == two)
// 结果:false
  1. 创建symbol的属性值
let symbol = Symbol()
   
let obj = {name:"张三疯",age:18}
  1. fon in for of 不会遍历symbol
obj[symbol] = "123"
console.log(obj)
for(var v in obj){
   console.log(obj[v])
}
// 结果:报错
  1. symbol 值不能与其他类型的值进行运算
let obj = {
	toString(){
		return "123"
	}
}
let a = Symbol(obj)
console.log(a+'1234')
// 结果:报错
  1. Symbol 值可以显式转为字符串。
let obj = {
	toString(){
		return "123"
	}
}
let a = Symbol(obj)

console.log(String(a))
// Symbol(123)
console.log(a == String(a))
// false

总结:

以上就是 ES6中新增的 Symbol 的详解与用法,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风 与我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值