Лучший способ объявить константы javascript

Я разработчик java и работаю над проектом java script после долгого времени. Я удивлен, увидев, как много изменилось за последние годы, и приятно видеть, что это стандартизируется. У меня есть основной вопрос: в текущем проекте я вижу константы, объявленные с использованием прототипа (проект с использованием ES5), а в некоторых случаях он использует getter для объявления константы. Итак, какой должен быть лучший способ объявить константы:

Использование прототипа: в некоторых местах, о которых упоминалось, это плохо, так как мы можем переопределить значение Ooo.CONSTANT1.

function Ooo() {
}

Ooo.prototype.CONSTANT1 = 1;
Ooo.prototype.CONSTANT2 = 2;

По старому:

const CONSTANT1 = 1;

Использование геттера:

let _bar = {};
var Foo = function Foo() {}

Object.defineProperty(Foo, "bar", {
  get: function() {
    return _bar;
  }
});

Или какой-то лучший способ?

javascript,

0

Ответов: 2


1

Если вы хотите создать константы с именами, не имея дело с многословием геттеров, все еще получая схожие результаты, вы можете попробовать использовать Object.freeze. например

const Directions = Object.freeze({
    NORTH: 0,
    EAST: 1,
    SOUTH: 2,
    WEST: 3,
});

0

Вы можете попробовать этот синтаксис для всех версий js:

consts={};
 function DefAsConst(varName, val){
      Object.defineProperty(window.consts, varName, {
          value: val,  writable: false
      });
 }
 DefAsConst("const_1", 4);
 console.log(consts.const_1);
 consts.const_1=100;
 console.log(consts.const_1); //consts.const_1 is 4 still

Или попробуйте эту версию:

 consts={};
 consts.DefAsConst=function(varName, val){
    Object.defineProperty(this, varName, {
       value: val,  writable: false
   });
 };
 consts.DefAsConst("const_2", 40);
 console.log(consts.const_2);
 consts.const_2=100;
 console.log(consts.const_2);
JavaScript,
Похожие вопросы