【问题标题】:Object property constants in ECMAScript?ECMAScript 中的对象属性常量?
【发布时间】:2011-05-07 15:16:51
【问题描述】:

我已经看到了一些关于 ECMAScript Harmony 的建议,即能够使用关键字 const 指定常量。然而,它似乎只在块作用域中可用(即FunctionBodyProgram)。有没有办法将常量定义为对象属性(想象一下myObj.STATUS_OK)?

我想建议的方法是通过Object.definePropert(y/ies) 使用properties,但这似乎不是很方便,是吗?

【问题讨论】:

    标签: javascript constants ecmascript-harmony


    【解决方案1】:

    似乎const 与环境框架绑定更相关,因此与对象和属性略有不同。

    也就是说,在全局变量上,这正是它所做的:

    const a = 10;
    Object.getOwnPropertyDescriptor(window, "a");
    /*
       Object:
          configurable: true,
          enumerable: true
          value: 10
          writable: false
    */
    

    如果您正在寻找速记,那么您可以制作一个非常简单的宏。

    在您的情况下,另一种方法是使用 get-only 值:

    var myObj = {
       get STATUS_OK(){ return 42; }
    };
    

    【讨论】:

      【解决方案2】:

      只是一个想法。

      将它们声明为:

      var CONST = 
       {
         ONE: 1,
         TWO: 2
       };
      
      Object.seal(CONST);
      

      并将它们用作:

         CONST.ONE, CONST.TWO 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        • 2012-01-30
        • 2015-02-12
        • 1970-01-01
        • 2010-10-05
        • 2019-01-29
        • 1970-01-01
        相关资源
        最近更新 更多