在object属性中使用变量

时间:2013-09-11 17:01:07

标签: jquery object properties object-literal

我使用对象文字作为我的js,下面你可以看到它是“全局”变量。其中一个是一个对象(theBody),它又包含一个名为“body”的数组。这个数组包含几个对象(下面的例子中只有一个),它们是svg对象。

我希望能够从一个名为bodyColor的特定变量中分配填充值,但是当我改变时:

'fill':'#e59225',

'fill': AvGen.theBody.bodyColor,

我收到错误 Uncaught ReferenceError:未定义theBody

为什么这样,我如何为对象属性访问bodyColor?

来自js的

var AvGen = {

    paper: null,
    theBody: {
        bodies: [
            [0,0,277.9,308.5,{
                type:'path',
                'fill':'#e59225',
                'stroke':'none',
                'stroke-width':'0',
                'fill-opacity':'1',
                'stroke-opacity':'0'
            }],
        ],
        currNr: 1,
        currObj: null,
        bodyColor: '#e59225'
    },

    init: function() {

    }
}

2 个答案:

答案 0 :(得分:1)

检查这个小提琴DEMO

我认为您的错误是您在使用它的函数后定义AvGen。 我首先定义了一个js函数,在AvGen之后我和你有相同的错误。

在功能代码解决问题之前移动AvGen块。

AvGen = {
paper: null,
theBody: {
    bodies: [
        [0,0,277.9,308.5,{
            type:'path',
            'fill':'#e59225',
            'stroke':'none',
            'stroke-width':'0',
            'fill-opacity':'1',
            'stroke-opacity':'0'
        }],
    ],
    currNr: 1,
    currObj: null,
    bodyColor: '#e59225'
},

init: function() {

}
}
$(document).ready(function(){   
    $('#test').attr('style', 'background-color:' + AvGen.theBody.bodyColor);
});

答案 1 :(得分:1)

你试图在定义之前引用它!您正在尝试使用theBody,但尚未创建它。你可以这样做:

var AvGen = {
    paper: null,
    theBody: {
        bodies: [
            [0,0,277.9,308.5,{
                type:'path',
                'fill': null,
                'stroke':'none',
                'stroke-width':'0',
                'fill-opacity':'1',
                'stroke-opacity':'0'
            }],
        ],
        currNr: 1,
        currObj: null,
        bodyColor: '#e59225'
    },

    init: function() {

    }
}

AvGen.theBody.bodies[0][4].fill = AvGen.theBody.bodyColor;

甚至更好;完全提取bodyColor

var bodyColor = "#e59225";
var AvGen = {
    paper: null,
    theBody: {
        bodies: [
            [0,0,277.9,308.5,{
                type:'path',
                'fill': bodyColor,
                'stroke':'none',
                'stroke-width':'0',
                'fill-opacity':'1',
                'stroke-opacity':'0'
            }],
        ],
        currNr: 1,
        currObj: null,
        bodyColor: bodyColor
    },

    init: function() {

    }
}