前言
今天是10.24程序员节,小糖祝大家节日快乐,共勉!希望我们都如Symbol一样,皆能成为独一无二的程序员!今天,小糖给大家分享的是ES6新增的一种原始数据类型-----------Symbol
一、Symbol详述
1、原理:
作为ES6心中的一种原始数据类型,表独一无二的,防止值相同的变量重名。
2、基本用法
可以接受一个字符串作为参数,为新创建的 Symbol 提供描述。
let a = Symbol("abc");
console.log(a); // Symbol(abc)
console.log(typeof(a)); // "symbol"
let b = Symbol("abc");
a === b? console.log(true):console.log(false);// false
以上栗子可得,即使是a变量与b变量都是Symble()类型,两者添加的描述相同(参数相同)
但是返回的值不相等,即a === b;结果为false,由Symble的特性可用作对象属性名的声明;
3、作用:作为属性名
(1)语法:
对象名 + [ Symbol声明的变量] = "属性值";
举个栗子~
let name = Symbol("a"); //Symbol声明的变量
//声明一个Symbol类型的变量name,a作为属性名
let obj = {};
//声明一个对象
obj[name] = "凤求凰";
//相当于是给对象的a属性赋值“凤求凰”
console.log(obj);
(2)第二种写法
let name = Symbol("a");
//声明一个Symbol类型的变量name,a作为属性名
let obj = {
[name]: "凤求凰"
};
console.log(obj);
(3)注意点:
Symbol 作为对象属性名时不能用 . 运算符,要使用方括号。
否则就是取到普通字符串的属性,而不是Symbol(独一无二)值的属性
举个栗子~
let obj = {};
let name = Symbol("a");
//声明一个Symbol类型的变量name,a作为属性名
obj[name] = "凤求凰";
console.log(obj[name]); //输出为:"凤求凰"
console.log(obj.name); //输出为:undefined
二、结束语
希望本篇文章可以帮到求知若渴的众多同学吖~
若能帮到 也欢迎点赞、收藏、关注我,后续也会持续发布新文章,祝大家学有所成!
欢迎各位前端大佬留言讨论指教! 小糖谢谢各位啦~❤ ❤ ❤ ❤