2017-12-16 4 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 }; 
관련 문제