• 了解一下ECMA标准提案的几个阶段(stagex)


    stage-x 处于某个阶段,描述的是ECMA标准相关的内容。根据天提案划分界限,stage-x大致分为以下阶段:

    • stage-0:还是一个设想,只能由TC39成员或TC39贡献者提出,什么样的设想呢?比如怎么一年后我称为世界首富,我应该怎么做才能称为世界首富呢?

    • stage-1::提案阶段,比较正式的提议,只能由TC39成员发起,这个提案要解决的问题必须有正式的书面描述。比如,我设想称为世界首富,建议认 “比尔.盖茨” 和 “亚马逊CEO” 两个为亲爹。并且继承它们两个的遗产,我就可以成为世界首富了。

    • stage-2:草案,有了初始规范,必须对功能语法和语义进行正式描述,包括一些实验性的实现。继续首富之梦,认爹也不能白认吧,起码有点诚意给每一个爹磕三个响头就稳了。可以提前计划一下首富后的快乐生活。

    • stage-3:候选,该提议基本已经实现,需要等待实验验证,用户反馈及验收测试通过。 基本上已经稳了,就等着继承遗产就ok了。

    • stage-4:已完成,必须通过 Test262 验收测试,下一步就纳入ECMA标准。 首富开始交接仪式,成功上位,等待下次福布斯排行榜统计后,你就上榜了!

    如果想要提前使用一些较为新鲜的ECMA语法(未到stage-4)阶段的语法,如ES6类的扩展:

    1. 实例属性初始化
    2. 静态类属性
    3. 函数绑定到类实例
    4. 类上定义静态函数
    class Bork {
        //Property initializer syntax
        instanceProperty = "bork";
        boundFunction = () => {
          return this.instanceProperty;
        };
    
        //Static class properties
        static staticProperty = "babelIsCool";
        static staticFunction = function() {
          return Bork.staticProperty;
        };
      }
    
      let myBork = new Bork;
    
      //Property initializers are not on the prototype.
      console.log(myBork.__proto__.boundFunction); // > undefined
    
      //Bound functions are bound to the class instance.
      console.log(myBork.boundFunction.call(undefined)); // > "bork"
    
      //Static function exists on the class.
      console.log(Bork.staticFunction()); // > "babelIsCool"
    

    可以借助 babel 的一些插件在构建编译阶段转换成浏览器可运行的代码。插件是 @babel/plugin-proposal-class-properties。这样配置:

    {
      "plugins": ["@babel/plugin-proposal-class-properties"]
    }
    

    这在开发React场景下使用偏多,也可以使用React脚手架工具这样这些语法都包括在内。

  • 相关阅读:
    javascript --学习this
    seaJS
    wamp之htaccess的配置
    replace之$1、$2等
    nw.js使用
    新电脑开发环境配置
    vue-vue常用指令
    Array的splice与slice
    vue-入门体验
    Object.defineProperty
  • 原文地址:https://www.cnblogs.com/qiqingfu/p/12387591.html
Copyright © 2020-2023  润新知