我正在尝试为我的某个网站设置常量文件。我正在尝试设置它,以便在需要时可以获得字符串常量。
到目前为止我所拥有的(不工作,有点像C#ish)
var Constants = new SiteConstants();
function SiteConstants()
{
this.Training = function Training()
{
this.Staff = function Staff()
{
this.fetch = "someurl";
}
}
}
console.log(Constants.Training().Staff().fetch); //Fail - what i want to call
//or something similar like Constants.Training.Staff.fetch
console.log((new Constants.Staff()).fetch); //Success
这是否可以在JavaScript中使用,如果没有,有人可以建议替代方案吗?
答案 0 :(得分:4)
为此必须使用对象而不是函数。
var Constants = {
Training: {
Staff: {
fetch: "someurl"
}
}
};
答案 1 :(得分:2)
尝试正确定义每个构造函数。
function SiteConstants()
{
this.training = new Training();
}
function Training()
{
this.staff = new Staff();
}
function Staff()
{
this.fetch = "someurl";
}
或者您也可以这样做:
function SiteConstants()
{
function Training()
{
function Staff()
{
this.fetch = "someurl";
}
this.Staff = new Staff();
}
this.Training = new Training();
}
答案 2 :(得分:2)
我建议采用完全不同的方法;一个更适合JavaScript的东西:JSON。
{
"siteConstants" : {
"training" : {
"staff" : {
"fetch" : "someurl"
}
}
}
}
然后,如果您将此对象附加到var constantsObject
,则可以访问常量:
constantsObject.siteConstants.training.staff.fetch; // returns "someurl"
constantsObject["siteConstants"]["training"]["staff"]["fetch"] // returns "someurl"
答案 3 :(得分:1)
您将Training定义为构造函数,但从未实际调用它。你想要的是:
function SiteConstants()
{
var Training = function Training() //constructor
{
this.Staff = function Staff()
{
this.fetch = "someurl";
}
}
this.Training = new Training();
}
对于内部阶级来说等等。
答案 4 :(得分:1)
你需要像这样创建一个新对象
var Obj = new Constants.Training();
然后您需要调用职员Staff和console.log
Obj.fetch
Obj.Staff();
console.log(Obj.fetch);
或者你可以这样做
function SiteConstants()
{
this.Training = function Training()
{
this.Staff = function Staff()
{
this.fetch = "someurl";
}
}
}
var Constants = new SiteConstants();
Constants.Training = new Constants.Training();
Constants.Training.Staff();
console.log(Constants.Training.fetch);