将属性值重用为同一对象中的变量

时间:2013-08-26 15:25:37

标签: javascript object

如果我的词汇在问题中有误导性,我很抱歉,但实际上我想在一个javascript对象中使用变量作为属性的值。例如:

var fruits = {
    banana: 'yellow',
    apple: 'red',
    jazz_apple: apple
}

如果我定义一个函数并调用this,我可以访问没有问题的值,即

var fruits = {
    banana: 'yellow',
    apple: 'red',
    jazz_apple: function() {
        return this.apple //fruits.jazz_apple() returns 'red'
    }
}

但我不想定义一个函数来获取这个值。有没有办法在没有函数的情况下在对象内的新属性fruits.apple上重用先前声明的fruits.jazz_apple('red')颜色?

2 个答案:

答案 0 :(得分:2)

您需要使用函数来访问this(也称为上下文)。我建议创建一个水果功能。您还可以将fruits函数视为一个类,因为类是Javascript中的函数。

function fruits() {
    this.banana = 'yellow';
    this.apple = 'red';
    this.jazz_apple = this.apple;
}

var myFruits = new fruits();
myFruits.jazz_apple;

如果您不想创建fruits类,您还可以使用作用于该对象的变量。

function () {
    var apple = 'red',
        fruits = {
            banana: 'yellow',
            apple: apple,
            jazz_apple: apple
        };
}

答案 1 :(得分:0)

我认为没有一种很好的方法可以在不使用之前定义的值的情况下执行您正在执行的操作,因为在您尝试引用它时,尚未完成创建。

上述功能的唯一原因是因为你在水果完成初始化后运行它。

最好的办法是在初始化或重用声明的变量后添加属性:

var fruits = {
    banana: 'yellow',
    apple: 'red'
};

fruits.jazz_apple = fruits.apple;

var apple_color = 'red';

var fruits = {
  banana: 'yellow',
  apple: apple_color,
  jazz_apple: apple_color
}