3

質問で私の語彙が誤解を招く場合は申し訳ありませんが、基本的には、1 つの 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クラスは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 に答える