sim*_*ed. 3 javascript final module const
我正在尝试编写一些代码,允许我根据我使用的变量名检索整数值.但是,我试图使整数值成为最终值或无法更改的值.我已经放置了一些代码,允许我检索值,如上所述.任何人都可以告诉我,如果我可以将它们作为最终变量或其他东西吗?提前致谢.
(function() {
// Create the global, and also give ourselves a convenient alias for it (`mod`)
window.MyModule = {
RED: "#FF0000",
BLUE: "#0000FF",
GREEN: "#00FF00",
};
})();
alert(MyModule.RED); // #FF0000
Run Code Online (Sandbox Code Playgroud)
免责声明:在安全性方面/最终变量方面是愚蠢的.在提高性能方面,因为js引擎可以更好地优化它,我怀疑它有所作为.
基准测试显示性能没有明显增加.除了迂腐或伪安全之外,这实际上并没有用.
唯一的用例是让你的图书馆的一部分被冻结,这样用户就不会在脚下射击.
使用ES5 Object.freeze
window.MyModule = Object.freeze({
RED: "#FF0000",
BLUE: "#0000FF",
GREEN: "#00FF00",
});
Run Code Online (Sandbox Code Playgroud)
您可以(并且强烈建议)使用ES5-shim升级旧版/旧版浏览器以实现合规性.
你也可以使用 Object.defineProperties
window.MyModule = {};
Object.defineProperties(window.MyModule, {
RED: { value: "#FF0000" },
BLUE: { value: "#0000FF" },
GREEN: { value: "#00FF00" }
});
Run Code Online (Sandbox Code Playgroud)
以上使用有一个很好的快捷方式 Object.create
window.MyModule = Object.create(null, {
RED: { value: "#FF0000" },
BLUE: { value: "#0000FF" },
GREEN: { value: "#00FF00" }
});
Run Code Online (Sandbox Code Playgroud)
要小心设置原型null,你可能想要设置它Object.prototype
| 归档时间: |
|
| 查看次数: |
4335 次 |
| 最近记录: |