2017-12-16 19 views
1

私はオブジェクトとしてplayerを指定しています。weaponなどのオブジェクトの中には、stickのようなアイテムとして定義されているオブジェクトがあり、破損する可能性があります。ただし、関数player.weapon.stickによって呼び出されると、「Uncaught TypeError:未定義のプロパティ 'stick'を読み取ることができません」というエラーが返されます。私はそれが武器が定義されていませんが、私はこのすべてを定義しているブロックがオブジェクトとして定義されたオブジェクトは返されません

//Player Data 
var player = { 
weapon: stick, 
speed: 3, 
armor: cloth, 
location: pLocation 
} 
var pLocation = [tickX, tickY]; 

//Items 
var stick = { stick: 1 }; 
var cloth = { ClothArmor: 1 }; 

は私のそれの定義や方法player.weapon.stick

+0

あなたの例から、あなたは 'tickX'と' tickY'が定義されているいくつかのコードを、欠けていますか? – Andrei

+0

'player'で使う前に' stick'と 'cloth'を宣言する必要があります。 'tickX'と' tickY'は例では定義されていません。 –

答えて

0

あなたはここにいくつかの問題を持っている、あなたは失礼なことをしようとしていないオブジェクトを(理解していないようですが、あなたはしている最大の一つでありますそれらを使用して間違ってwaaay)。

var pLocation = [tickX, tickY]; // place this first to avoid undefined location 
var player = { 
weapon: stick, // stick without quotation marks is a variable, not a string, so this would be player.weapon = stick where stick = undefined variable. 
speed: 3, 
armor: cloth, 
location: pLocation // since pLocation is defined after in your script i currently has no value, so location will be undefined. 
} 
//alternatively for pLocation 
player.location = [tickX, tickY]; 

//Items 
var stick = { stick: 1 }; // this creates an object called stick with a variable called stick with the value 1, so stick.stick = 1. 
var cloth = { ClothArmor: 1 }; // this creates an object called cloth with a variable called ClothArmor with the value 1, so cloth.ClothArmor = 1. 

あなたがplayer.weapon.stickを呼び出すのであれば、それは武器がオブジェクトではないので、それはオブジェクト内の変数の間違ったのです。 player.weapon.stickが必要な場合は、次のコードを使用する必要があります。

player = { 
    weapon: { 
     stick: 'Variable value' 
    } 
} 
+0

すみません!私は私があまりにも良くないと知っている私はここに行くように私は実際に学び、それは、配列の代わりにプレーヤーのデータの格納のためにオブジェクトを使用することをお勧めしたので、私はちょうど、 –

1

clothstickである必要があり、私はそれを呼んでいる内部の問題であると言っていると信じてplayerを宣言したときに定義されています。まだ定義されていないので、値はundefinedに解決され、後で定義するときに変更されません。

1

これは、使用する前に変数を定義するのが最良である彼ら

var pLocation = [tickX, tickY]; 

//Items 
var stick = { stick: 1 }; 
var cloth = { ClothArmor: 1 }; 

//Player Data 
var player = { 
    weapon: stick, 
    speed: 3, 
    armor: cloth, 
    location: pLocation 
} 
+3

「使用する前にそれらを定義するのが最善ではない」 - 他のオプションはありません... – alfasin

1

JSのみのホイスト機能 - 変数ではありません。したがって、変数を使用する前に変数を定義する必要があります。

var pLocation = [tickX, tickY]; 

    //Items 
    var stick = { stick: 1 }; 
    var cloth = { ClothArmor: 1 }; 

    //Player Data 
    var player = { 
    weapon: stick, 
    speed: 3, 
    armor: cloth, 
    location: pLocation 
    } 

または

var stick 

//Player Data 
var player = { 
weapon: stick, 
speed: 3, 
armor: cloth, 
location: pLocation 
} 
var pLocation = [tickX, tickY]; 

//Items 
stick = { stick: 1 }; 
var cloth = { ClothArmor: 1 }; 
関連する問題