ES6:Symbol创建对象属性及调用方法

news/2024/7/10 22:36:27 标签: javascript, 前端, es6

1.第一种调用方法:
obj[Reflect.ownKeys(obj)[index]]()

javascript">        //向对象中添加方法 up down
        let game = {
            name: 'YY',
            up() {
                console.log('向上');
            },
            down() {
                console.log('向下');
            }
        }

        //声明一个对象
        let methods = {
            up: Symbol(),
            down: Symbol()
        };
        game[methods.up] = function() {
            console.log('up');
        }
        game[methods.down] = function() {
            console.log('down');
        }
        console.log(game);
        game.up(); //向上
        game.down(); //向下
    //调用Symbol创建的函数
    game[Reflect.ownKeys(game)[3]]()  //up
    game[Reflect.ownKeys(game)[4]]()  //down

2.第二种调用方法:
Object.getOwnPropertySymbols(obj)[index]();

javascript">        //直接加入
        let youxi = {
            name: '狼人杀',
            [Symbol('say')]: function() {
                console.log('发言');
            },
            [Symbol('zibao')]() {
                console.log('自爆');
            }
        }
        console.log(youxi);
        console.log(youxi['name']); //狼人杀
    //调用Symbol创建的函数
    const a = Object.getOwnPropertySymbols(youxi);
    youxi[a[0]](); // 发言
    youxi[a[1]](); // 自爆

3.第三种方法调用:obj[方法名]()

javascript">        let up1 = Symbol();
        let down1 = Symbol();
        let game1 = {
            name: 'YY',
            up1() {
                console.log(1);
            },
            down1() {
                console.log(2);
            },
            [up1]() {
                console.log('向上');
            },
            [down1]() {
                console.log('向下');
            }
        }
        console.log(game1);
        game1.up1(); // 1
        game1.down1(); // 2
   //调用Symbol创建的函数
   game1[up1](); // 向上
   game1[down1]();  // 向下

http://www.niftyadmin.cn/n/854592.html

相关文章

JavaScript字符串方法总结

所有字符串方法都会返回新字符串。它们不会修改原始字符串 **四个与正则关联的字符串方法**var ex /(y|[0-9])/ig;var newEx /\||_/ig;var str yy-yy-_-|2000|-;ex.test(str);//match() 以数组形式返回匹配到的字符串console.log(str.match(ex));//replace() 替换匹配到的字…

axios初识

axios初识 1. axios.get(url)返回的是一个promise对象,若成功则PromiseState为fulfilled,若失败PromiseState为rejected,而PromiseResult则为获得的数据 console.log(axios.get(https://api.apiopen.top/getJoke));console.log(axios.get(ht…

浏览器检测

检测浏览器 浏览器名称:除了IE10及以下是Microsoft Internet Explorer,谷歌、火狐、Edge、IE11都是Netscape console.log(navigator.appName) //返回浏览器名称浏览器的代码名:都是Mozilla console.log(navigator.appCodeName); //返回浏览…

Promise封装AJAX

/*** promise封装AJAX*/ function sendAJAX(request, url, data, responseType) {return new Promise((resolve, reject) > {// var formData ;// Object.entries(data);// for (let k in data) {// formData k data[k] &;// }// formData formData.substrin…

js错误处理及调试

错误类型: Error 基类型,是所有的类型的⽗类,其它的类型都继承⾃它。⼀般由浏览器抛出,这个基类主要 是⽤于开发⼈员抛出⾃定义的错误类型EvalError表⽰全局函数eva()的使⽤⽅式与定义的不同时抛出,但是实际上并不能产…

axios较常用的全局配置

axios.defaults.baseURL 域名; if (localStorage.phone) axios.defaults.headers.common[phone] JSON.parse(localStorage.phone);//请求头全局配置 if (localStorage.token) axios.defaults.headers.common[token] JSON.parse(localStorage.token);//请求头全局配置 // axi…

百度地图API的使用

首先先注册百度地图开放平台开发者账户 申请地址http://lbsyun.baidu.com/apiconsole/key 其次在应用管理里我的应用下进行创建应用 这里应用类型作为前端人员选择浏览器端,Referer白名单可以写*,表示访问无限制 接下来就可以参考javascriptAPI文档来…

Base64加密实战

首先先引入Base64.js文件 https://cdn.jsdelivr.net/npm/js-base643.7.2/base64.min.js base64对于空格等特殊符号的加解码更加完善,不会像原生js中的加解码会在解码时出现一些小问题。 /*** 登录状态*/ function loginStatus() {const checkbox document.queryS…