2012-09-03 2 views
1

실제 오류 코드Google 폐쇄 고급 | 개체 속성이 인식되지 않음 | 동적 속성?

JSC_INEXISTENT_PROPERTY

요약

가 목록 아래 주석 코드에 대해이 오류가 발생합니다.

나는 이렇게 전화를한다. o_p.page는 사용자 입력을 보유하고 속성 중 하나는 실제로이 같은 사용자 입력 개최 o_p.page 개체를 호출하여 채워집니다 tag

Mo.AppBAdder.image_element = vDomBMAdd(o_p.page); 

입니다 :

o_p.page = text_object.getArray(); 

나는이 작업을 수행 할 수있는 방법이 있나요을 그래서 Google Closure는 부동산이 존재하지 않는다고 생각하지 않습니다.

설정 옵션은 O.K입니다. 또한 필요한 경우 코드를 약간 수정해도 상관 없습니다.

는 텍스트 생성자 이런 사용자 입력을 판독

: 코드

function vDomBMAdd(bookmark_object) { 
    var link_element = document.createElement('a'), 
     image_element = document.createElement('img'), 
     page_element = $a('#' + bookmark_object.tag + '_page'), // error here - inexistent property 

참조

Inexistent의

Su.text = function (form_elements) { 
    this.text_object = {}; 
    var key; 
    for (key in form_elements) { //*u 
     if (form_elements.hasOwnProperty(key)) { 
      this.text_object[form_elements[key].name] = form_elements[key].value; 
     } 
    } 
    return this; 
}; 

니펫

로서 존재 같은 것을 의미

답변

3

당신은 두 가지 옵션이 있습니다 이러한 접근 방식 모두가 당신을 허용

bookmark_object['tag'] 

다음 '태그'속성 또는, 아마 더 적절 속성을 정의하는 방법을 주어진이 인용 속성 액세스를 사용을 선언하는 통근 파일을 생성 "외부"속성에 액세스하고 모두 고급 최적화와 호환되지만 extern 파일을 사용하면 속성에 포함 된 값의 예상 유형을 선언 할 수 있으므로 더 나은 유형 확인이 가능합니다.

+0

점 표기법을 선호하므로 jslint가 중단됩니다 ... 정적 코드 분석 ... hmmmm –

+0

jshint는 경고를 사용자 정의 할 수 있으므로 jslint의 좋은 대안입니다. JsLint의 작성자는 Closure Compiler의 규칙을 지원하지 않습니다. – John

관련 문제