访问同一对象中的对象属性

时间:2016-02-15 19:57:50

标签: javascript

我有一个像这样的对象cats

var model = {
    cats: [
        {
            name: "Fossie",
            url: "",
            count: 0
        },
        {
            name: "Bootsie",
            url: "",
            count: 0
        }
    ], 
    currentCat: cats[0], //error here
}

当我尝试访问cats[0]时,出现以下错误:ReferenceError: cats is not defined

如果我将cats[0]替换为this.cats[0],我会收到此错误:Uncaught TypeError: Cannot read property '0' of undefined

是否无法访问同一对象中的对象属性?或者我应该在model内创建一个函数并在那里初始化currentCat吗?

3 个答案:

答案 0 :(得分:2)

不,这是不可能的。试试这个:

var model = {
    cats: [
        {
            name: "Fossie",
            url: "",
            count: 0
        },
        {
            name: "Bootsie",
            url: "",
            count: 0
        }
    ]
}
model.currentCat = model.cats[0];

您无法在初始化对象之前使用该对象 - 因此,在您尝试设置currentCat的位置时,您仍然在内部'初始化,你的模型无法访问。

在此代码之后,模型将如下所示:

model = {
    cats: [
        {
            name: "Fossie",
            url: "",
            count: 0
        },
        {
            name: "Bootsie",
            url: "",
            count: 0
        }
    ],
    currentCat: {
        name: "Fossie",
        url: "",
        count: 0
    }
}

答案 1 :(得分:1)

您可以存储当前cat的索引(并使用preg_match_all('#(.*\(\([0-9\.]+,[0-9\.]+\)\).*?)#',$lines,$match);访问函数中的属性):

this

答案 2 :(得分:-1)

不要在模型中使用它。在猫定义后使用它。

var model = {
    cats: [
        {
            name: "Fossie",
            url: "",
            count: 0
        },
        {
            name: "Bootsie",
            url: "",
            count: 0
        }
    ], 
    // currentCat: cats[0], //error here
}
model.currentCat = model.cats[0];

希望这对你有好处