Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中对象中的对象_Javascript - Fatal编程技术网

JavaScript中对象中的对象

JavaScript中对象中的对象,javascript,Javascript,我正在尝试为我的一个站点设置常量文件。我正在尝试设置它,以便在需要时获取字符串常量 到目前为止我所拥有的(不工作,有点C#ish) 这在JavaScript中可能吗?如果不可能,有人能推荐一个替代方案吗?您将培训定义为构造函数,但从未实际调用它。你想要的是: function SiteConstants() { var Training = function Training() //constructor { this.Staff = function Staf

我正在尝试为我的一个站点设置常量文件。我正在尝试设置它,以便在需要时获取字符串常量

到目前为止我所拥有的(不工作,有点C#ish)


这在JavaScript中可能吗?如果不可能,有人能推荐一个替代方案吗?

您将培训定义为构造函数,但从未实际调用它。你想要的是:

function SiteConstants()
{
    var Training = function Training() //constructor
    {
        this.Staff = function Staff()
        {
            this.fetch = "someurl";
        }
    }
    this.Training = new Training();
}

内部类也是如此。

您将培训定义为构造函数,但从未实际调用它。你想要的是:

function SiteConstants()
{
    var Training = function Training() //constructor
    {
        this.Staff = function Staff()
        {
            this.fetch = "someurl";
        }
    }
    this.Training = new Training();
}

等等。为此,您必须使用对象而不是函数

var Constants = {
    Training: {
        Staff: {
            fetch: "someurl"
        }
    }
};

为此,必须使用对象而不是函数

var Constants = {
    Training: {
        Staff: {
            fetch: "someurl"
        }
    }
};

尝试正确定义每个构造函数

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();
}

尝试正确定义每个构造函数

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();
}

您需要像这样创建一个新对象

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);

您需要像这样创建一个新对象

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);

我建议采取完全不同的方法;一个对JavaScript更为惯用的方法是:JSON

{
    "siteConstants" : {
        "training" : {
            "staff" : {
                "fetch" : "someurl"
            }
        } 
    }
}
然后,如果将此对象附加到
var constantsObject
,则可以访问常量:

constantsObject.siteConstants.training.staff.fetch;    // returns "someurl"
constantsObject["siteConstants"]["training"]["staff"]["fetch"] // returns "someurl"

我建议采取完全不同的方法;一个对JavaScript更为惯用的方法是:JSON

{
    "siteConstants" : {
        "training" : {
            "staff" : {
                "fetch" : "someurl"
            }
        } 
    }
}
然后,如果将此对象附加到
var constantsObject
,则可以访问常量:

constantsObject.siteConstants.training.staff.fetch;    // returns "someurl"
constantsObject["siteConstants"]["training"]["staff"]["fetch"] // returns "someurl"

由于它们是构造函数,
(new(new Constants.Training()).Staff()).fetch
常量本身在Javascript中不存在。如果您试图在其他对象中创建对象,只需使用适当的对象文字表示法和赋值。@K.Hallman如果您是对的,这里有
const
关键字(),但我不建议这样做,因为它还没有得到广泛支持。我认为OP中“常量”的含义非常明显,正如您所建议的,对象文字可能是最好的方式…@Ian
const
是一个保留字,但据我所知,目前在ECMAScript规范中没有实现。OP令人困惑,因为它使用了一个含义不明确的词。因为它们是构造函数,
(new(new Constants.Training()).Staff()).fetch
常量本身在Javascript中不存在。如果您试图在其他对象中创建对象,只需使用适当的对象文字表示法和赋值。@K.Hallman如果您是对的,这里有
const
关键字(),但我不建议这样做,因为它还没有得到广泛支持。我认为OP中“常量”的含义非常明显,正如您所建议的,对象文字可能是最好的方式…@Ian
const
是一个保留字,但据我所知,目前在ECMAScript规范中没有实现。OP之所以让人困惑,是因为它使用了一个含义不明确的词。我需要将它们括起来,这样就不会有冲突的对象(我们网站上有大量的javascript对象)我需要将它们括起来,这样就不会有冲突的对象(我们网站上有大量的javascript对象)JavaScript中没有“JSON”类型。您正在创建一个对象文字,另一个答案已经给出provided@Ian我从来没有把它称为一种类型。我说的是“方法”,我仍然不明白为什么这里应该引用JSON。JSON是一种数据传输格式,与JavaScript没有任何关系(除了它是从JS对象派生出来的这一事实)@Ian同样,直到我发布了我的答案之后,我才看到Anton L的答案。无论如何,JSON可以在外部使用,这可能会更好地满足OP的请求:
“我正在尝试为我的一个站点设置一个常量文件。”
JavaScript中没有“JSON”类型。您正在创建一个对象文字,另一个答案已经给出provided@Ian我从来没有把它称为一种类型。我说的是“方法”,我仍然不明白为什么这里应该引用JSON。JSON是一种数据传输格式,与JavaScript没有任何关系(除了它是从JS对象派生出来的这一事实)@Ian同样,直到我发布了我的答案之后,我才看到Anton L的答案。无论如何,JSON可以在外部使用,这可能会更好地满足OP的请求:
“我正在尝试为我的一个站点设置一个常量文件。”