es6新增类型——Symbol

11 篇文章 0 订阅
8 篇文章 0 订阅

Symbol

js数据类型:
String
Number
Null
Undefined
Object
Boolean
Symbol

Symbol:
Symbol是一种全新的数据类型,作用:产生一个独一无二的值
用法:

console.log(Symbol());//Symbol()

可以传参:这个参数(description),类型为String/Number,相当于代码注释,让开发者明白当前Symbol的意义。

var name = Symbol("姓名");

由于每一个Symbol的值都不相等,Symbol可以用来解决对象属性被覆盖的问题:

const obj  = {
	[Symbol("食物")] :"涮羊肉"
};
obj.foods = "烤羊腿"; //覆盖不了
console.log(obj);//{foods: "烤羊腿", Symbol(食物): "涮羊肉"}

let mySymbol = Symbol("地址");
let obj = {
	[ mySymbol ] : "hello"
}
console.log(obj[mySymbol]);  //hello
console.log(obj[Symbol("地址")]);//undefined

③模拟私有属性:

function Food(){
	var innerName = Symbol("inner的方法名");
	this[innerName] = function(){
		console.log("我是私有方法")
	}
	this.sayHi = function(){
		this[innerName](); //我是私有方法
		console.log('涮羊肉很好吃');
	}
}
let food = new Food();
food.sayHi();//我是私有方法    涮羊肉很好吃

Symbol.for:
Symbol.for() 并不是每次都会创建一个新的 symbol,它会首先检查给定的 参数是否已经在Symbol注册表中了,如果已经存在,则会直接返回上次存储的那个。

if(Symbol.for("address") === Symbol.for("address")){
	console.log('相等');  //相等
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值