2012-02-26 5 views
0

가능한 중복 : var1.numberplus3 23하지만 var2.numberplus3 평가 본 예에서
Passing in dynamic key:value pairs to an object literal?
Javascript Object Literal referring to another property in itself from another propertyJavaScript : 리터럴 표기법을 사용하여 동일한 객체에 속한 다른 속성을 사용하여 객체의 속성을 정의 할 수 있습니까?

var var1 = {}; 

var1.number = 20; 
var1.numberplus3 = var1.number + 3; 
console.log(var1.numberplus3); 

var var2 = { 
    number: 20, 
    numberplus3: number + 3 
}; 
console.log(var2); 

이 "미등록"평가한다. 왜 이런거야?

(나는 Codecademy에서의 JS 인터프리터를 통해 사용하고 있습니다 : http://labs.codecademy.com/#:workspace를)

감사합니다!

+1

@Tomasz : 저것은 ... 조금 다르다,이 경우는 다른 개체의 속성입니다. * 편집 : * 오, 틀렸어 ... 제목을 읽었어야했다. 코드가 나를 혼란스럽게 만들었다. 미안하다. –

+0

@kinakuta :'var2.number'도'this.number'도 작동하지 않습니다. 'var2'는 아직 정의되지 않았기 때문에'var2'는 작동하지 않습니다. 'this'는 코드가 실행되는 곳의 컨텍스트 (대부분 'windwow')를 나타내지 만 100 %는 'var2'가 아닙니다. –

+0

Woops. 그래, numberplus3 = var2.number + 3이라고 써야 겠어! 그게 내가 실제로 달려 가려고 한거야! –

답변

1

당신은 작성해야 같은 :

var var2 = { 
    number: 20, 
    numberplus3: function() { return var2.number + 3; } 
} 

나 :

var var2 = { 
    number: 20 
}; 
// at this point the var2 object is defined and accessible in the memory 
var2.numberplus2 = var2.number+3; 
+0

아하 괜찮아 ... 그래서 함수를 만들어야 var2는 numberplus3가 설정되는 시점에 정의되어 있지 않습니까? 아마도 number2가 설정된 후에 numberplus3의 함수가 평가되기 때문일 것입니다. –

+0

@StanislavBeremski 당신은 아이디어를 얻었습니다. 메모리에서 접근 할 수없는 변수를 참조하려고하면 편집을보십시오. – user544262772

+0

위대한 ... 지금은 이해하고 있다고 생각합니다. 건배! –

관련 문제