2017-03-02 4 views
-2

私は配列内のインデックスを参照しようとしていますが、gameObjects [1]はundefinedとして戻ってきます。 gameObjectsはオブジェクトの配列です。javascriptオブジェクトの文字列と関数呼び出しを連結することはできませんか?

var gameObjects = [enemy,treasure]; 


var mysteryBlock = { 
name: "Mystery Block", 
output:"produces " + gameObjects[1] 

} 

var enemy = { 
output: "an enemy" 
} 

var treasure = { 

    output: "a treasure" 

} 

console.log("your mystery cube " + mysteryBlock.output) 

が不定に戻ってきます。

+0

たぶん、あなたは '出力意味:+ゲームオブジェクト "を生成する"[1] – bejado

+0

を.output'、どこの機能を使用すると、タイトルにを参照している呼び出していますか? – Lucero

答えて

1

使用する前にenemytreasureを定義する必要があります。あなたがオブジェクトのoutputプロパティを参照する必要があるので、働いていない:

var enemy = { 
    output: "an enemy" 
} 

var treasure = { 
    output: "a treasure" 
} 

var gameObjects = [enemy,treasure]; 


var mysteryBlock = { 
    name: "Mystery Block", 
    output:"produces " + gameObjects[1].output 
} 


console.log("your mystery cube " + mysteryBlock.output); 

Here it is working

+1

可変ホイスト。 –

+0

私は言葉を変えて、最初に定義するべきだと言いました。私はそれが動作することを実現する、私はちょうどそこにそれをしない理由がないことを示唆している – Pabs123

+1

申し訳ありませんが、私は可変ホイストがこの場合に動作しないことに気づいた。順序が必要です。 JavaScriptは初期化ではなく、宣言を呼び出すだけです。 –

1

gameObjects変数は、オブジェクトの配列で、次のようになります。

使用して、それを呼び出し
[{ 
    "output": "an enemy" 
}, 
{ 
    "output": "a treasure" 
}] 

gameObjects[1]、あなたはオブジェクトを受け取ります。結果を得るには、keyと指定する必要があります。この場合、outputになります。

var enemy = { 
 
    output: "an enemy" 
 
} 
 

 
var treasure = { 
 
    output: "a treasure" 
 
} 
 

 
var gameObjects = [enemy, treasure]; 
 

 
var mysteryBlock = { 
 
    name: "Mystery Block", 
 
    output: "produces " + gameObjects[1].output //mentioned line of code 
 
} 
 

 
console.log("your mystery cube " + mysteryBlock.output)

関連する問題