声明 JavaScript 常量的最佳方法



我是一名Java开发人员,经过很长时间的工作Java脚本项目。我很惊讶地看到它近年来发生了多大变化,很高兴看到它正在标准化。我有一个基本问题,在当前的项目中,我看到使用原型声明常量(使用 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;
}
});

还是更好的方法?

如果你想在不处理getter的详细程度的情况下创建命名空间常量,同时仍然得到类似的结果,你可以尝试使用Object.freeze。

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

您可以尝试所有版本的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);

相关内容

最新更新