面向对象javascript如何为常量创建静态类
我决定将所有常量放在一个名为constants的整洁类中,并希望使用点运算符访问其成员 到目前为止,我已经尝试:面向对象javascript如何为常量创建静态类,javascript,Javascript,我决定将所有常量放在一个名为constants的整洁类中,并希望使用点运算符访问其成员 到目前为止,我已经尝试: function Constants(){ Constants.style = {}; Constants.style.border_sides = 20; Constants.style.button_width = 17; // ... } 后来 Constants = new Constants(); 及 这导致了一场灾难 无法访问未定义宽度
function Constants(){
Constants.style = {};
Constants.style.border_sides = 20;
Constants.style.button_width = 17;
// ...
}
后来
Constants = new Constants();
及
这导致了一场灾难
无法访问未定义宽度的按钮
我会使用JSON来声明常量,但我喜欢代码中的注释。
有人能解释一下javascript的OO吗?在javascript中,每一个对象都是一个对象,因此您要在函数中向常量函数添加属性 要获得想要的效果,请编写:
var Constants = {
someText: 'text1',
someInt: 1
};
要访问,只需执行以下操作:
var text = Constants.someText;
如果您想要一个同时包含静态和实例方法的“类”:
function ClassName(){
}
ClassName.prototype = { //Put instance methods here
instanceMethod1 : function(){},
instanceMethod2 : function(){}
};
ClassName.staticMethod1 = function(){};
ClassName.staticMethod2 = function(){};
var a = new ClassName();
a.staticMethod1; //undefined
a.instanceMethod1; //function(){};
ClassName.staticMethod1 //function(){};
<>你为什么不考虑使用文字?
var Constants = {
style: {
border_sides: 20,
button_width: 17
}
}
即使您愿意考虑使用<代码>构造函数< /代码>,用<代码>替换<代码>常数< /> > < <代码> < /p>
function Constants(){
this.style = {};
this.style.border_sides = 20;
this.style.button_width = 17;
// ...
}
您不需要对文本执行任何新常量()
(第一个示例)。马上开始使用
例如,第二个示例
(构造函数)
您需要执行var constants=new constants()
将constants
函数替换为constants
的实例。您将常量应用于函数,而不是常量实例或原型。所以你有效地抹去了常数
我认为应该使用对象文字
var constants = {
style: {
border_sides: 20
}
};
请记住,这两种方法实际上都不是一成不变的。任何人都可以轻松更改“常量”值。如果您想要真正的常量数据,您可能需要使用getter/setter、
Object.defineProperty
或模块模式。对象文字非常适合我的目的。这就是我添加静态和实例方法的方式,实例和静态变量的工作方式相同吗?嗯。。您可以在这里查看对静态成员的解释:它是java语言(是的,我知道javascript和java是截然不同的语言类型),但这是相同的原则。现在,如果您的环境支持EcmaScript 2015,您可以使用const
var constants = {
style: {
border_sides: 20
}
};