2010-08-01 4 views
0

저는 여기를 잃고 있습니다. 내가 객체 형태로 인수를 제작 한이 클래스가 있습니다프로토 타입의 해시 인 캐스팅 오브젝트

new Widget('id_of_element', { option1: 'foo', option2: 'bar' }); 

그러나, 두 번째 인수는 해시으로 간주되지 않는, 그러나 개체로, 그래서에 기본 설정을 적용 할 수 없습니다

initialize: function (element, options) { 
    this.options = $H({ option1: 'something', option2: 'else', option3: 'hello', option4: 100 }).update(options); 
} 

내가 '옵션'이 해시로 변환 할 수있는 인수에서 알엇이 필요합니다, 그래서 업데이트() 함수를 사용할 수있는 경우 중 하나가 설정되어 있지 않습니다. 프로토 타입 프레임 워크에서 해시로 개체를 캐스팅 할 항목을 찾을 수 없습니다. this.options.inspect(), 모든 올바른 값이 표시에 이상한 무엇

은,하지만 난 그것을 호출 할 때 :

alert(this.options.option1); 
// or 
alert(this.options['option1']); 

은 ... 그들은 다시로 정의되어 있습니다. Hash # inspect 메소드는 왜 이러한 값을 찾지 만 여전히 정의되지 않았습니까? 어떤 유형에 대한 실질적인 이해가 부족한가요?

답변

1

자바 스크립트에서 캐스팅과 같은 것은 없습니다. Hash을 원한다면 이미 만들고있는 것을 만들어야합니다. 프로토 타입 문서에서

, 당신이 Hash의 방법을 사용하여 값을 얻을 필요가 나타납니다 : I 캐스팅 할 수 있는지 여부를

alert(this.options.get("option1")); 
+0

는 무관하다. 나는이 값들을 호출 할 수 있어야한다. Hash # inspect가 그 (것)들을해야하는 때 볼 수있는 경우에, 나는 왜 사용하기 위하여 가치를 추출 할 수 없는가? – mwieczorek

+0

내 대답이 업데이트되었습니다. –

+0

감사합니다. 해시 # 메서드에 대해 알았지 만,이 방법으로 액세스 할 수있는 x/y 및 왼쪽/위쪽 데이터 쌍을 반환하는 요소 메서드와 매우 유사하게 변수에보다 간단하게 액세스 할 수 있기를 정말로 바랬습니다. – mwieczorek

관련 문제