• 对象中方法的简写


    从es6开始,在对象初始器中引入了一种更简短定义方法的语法,这是一种把方法名直接赋给函数的简写方式。

    var obj = {
      foo: function() {
        /* code */
      },
      bar: function() {
        /* code */
      }
    };

    上面代码可被简写为:

    var obj = {
      foo() {
        /* code */
      },
      bar() {
        /* code */
      }
    };

    该简写语法getter和setter语法类似。

    生成器方法

    生成器方法也可以用这种简写语法定义。

    // 用有属性名的语法定义方法(ES6之前):
    var obj2 = {
      g: function*() {
        var index = 0;
        while(true)
          yield index++;
      }
    };
    
    // 同一个方法,简写语法:
    var obj2 = { 
      * g() {
        var index = 0;
        while(true)
          yield index++;
      }
    };
    
    var it = obj2.g();
    console.log(it.next().value); // 0
    console.log(it.next().value); // 1

    async方法

    async方法也可以使用简写语法来定义。

    // 用有属性名的语法定义方法(ES6之前):
    var obj3 = {
      f: async function () {
        await some_promise;
      }
    };
    
    // 同一个方法,简写语法:
    var obj3 = { 
      async f() {
        await some_promise;
      }
    };

    async生成器方法

    var obj4 = {
      f: async function* () {
        yield 1;
        yield 2;
        yield 3;
      }
    };
    
    // 简写
    var obj4 = {
      async* f() {
       yield 1;
       yield 2;
       yield 3;
      }
    };

    所有方法定义不是构造函数,如果您尝试实例化它们,将抛出TypeError

    var obj = { 
      method() {}
    };
    new obj.method; // TypeError: obj.method is not a constructor
    
    var obj = { 
      * g() {} 
    };
    new obj.g; // TypeError: obj.g is not a constructor (changed in ES2016)

    原文:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Method_definitions

  • 相关阅读:
    centos,ubuntu下安装zabbix遇到的问题
    代理环境下使用 ADDAPTREPOSITORY 添加 PPA 软件源
    Linux文件系统挂载管理
    Log4j配置详解
    myeclipse快捷键
    Linux用户基础(用户和组)
    C语言I博客作业07
    C语言I博客作业02
    C语言I博客作业08
    C语言I博客作业04
  • 原文地址:https://www.cnblogs.com/xjy20170907/p/11573166.html
Copyright © 2020-2023  润新知