es6新增类型——Symbol

旧城等待, 2023-06-30 09:24 55阅读 0赞

Symbol

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

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

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

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

  1. var name = Symbol("姓名");

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

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

  1. let mySymbol = Symbol("地址");
  2. let obj = {
  3. [ mySymbol ] : "hello"
  4. }
  5. console.log(obj[mySymbol]); //hello
  6. console.log(obj[Symbol("地址")]);//undefined

③模拟私有属性:

  1. function Food(){
  2. var innerName = Symbol("inner的方法名");
  3. this[innerName] = function(){
  4. console.log("我是私有方法")
  5. }
  6. this.sayHi = function(){
  7. this[innerName](); //我是私有方法
  8. console.log('涮羊肉很好吃');
  9. }
  10. }
  11. let food = new Food();
  12. food.sayHi();//我是私有方法 涮羊肉很好吃

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

  1. if(Symbol.for("address") === Symbol.for("address")){
  2. console.log('相等'); //相等
  3. }

发表评论

表情:
评论列表 (有 0 条评论,55人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ES6--Symbol类型

    概述 ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。 ES6 数据类型除了 Number 、 Strin