zoukankan      html  css  js  c++  java
  • Symbol基础

    ES6引入了一种新的原始数据类型Symbol, 表示独一无二的值。它是JavaScript语言的第七种数据类型( Number 、 String 、 Boolean 、 Objec t、 null 和 undefined ),是一种类似于字符串的数据类型。

    Symbol特点

    1. Symbol 的值是唯一的,用来解决命名冲突的问题

    2. Symbol值不能与其他数据进行运算

    3. Symbol 定义的对象属性不能使用for..in 循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名

    创建Symbol

     //创建Symbol
    let s = Symbol();
    console.log(s,typeof s);  //Symbol() "symbol"
    
    let s2 = Symbol('贺文靖'); //Symbol 是一个函数
    let s3 = Symbol('贺文靖');
    console.log(s2 === s3);//false
    
    let s4 = Symbol.for('美女');  //此时,Symbol成为一个对象
    let s5 = Symbol.for('美女');
    console.log(s4 === s5);//true
    

    对象添加Symbol类型的属性

    //向对象添加方法 up down
    let game = {};
    //声明一个对象
    let methods = {
        up: Symbol(),
        down: Symbol()
    };
    
    game[methods.up] = function () {
        console.log("我可以上升");
    };
    
    game[methods.down] = function () {
        console.log("我可以下降");
    };
    //调用方法
    game[methods.up]();
    

    这里调用我只知道用另一种方式:先在对象youxi外定义变量let say = Symbol('say')

    再把对象youxi内部中括号的Symbol('say')替换成刚刚在外面定义的变量say,即[say]: function..

    最后在对象youxi外部调用:youxisay这样就可以调用"我可以发言"那个方法了

    let say = Symbol('say');
    let zibao = Symbol('zibao');
    /* let youxi = {
            name: '狼人杀',
            [Symbol('say')]: function () {
                console.log('我可以发言');
            },
            [Symbol('zibao')]: function () {
                console.log('我可以自爆');
            }
        };*/
    let youxi = {
        name: '狼人杀',
        [say]: function () {
            console.log('我可以发言');
        },
        [zibao]: function () {
            console.log('我可以自爆');
        }
    };
    youxi[say]();
    
  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/wahaha-/p/14028030.html
Copyright © 2011-2022 走看看