3

如果我的词汇在问题中具有误导性,我很抱歉,但本质上我想使用一个变量作为一个 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的新属性上重用先前声明的颜色 ('red') ?fruits.jazz_apple

4

2 回答 2

2

您需要使用函数来访问this(又名上下文)。我建议创建一个 fruits 函数。您也可以将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
        };
}
于 2013-08-26T15:32:45.710 回答
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
}
于 2013-08-26T15:33:35.447 回答