2014-12-08 2 views
1

JavaScript에 익숙하지 않아 여기에서 무슨 일이 벌어지고 있는지 이해할 수 있습니다. 이것은 알고있는 사람들에게 아마도 간단한 질문 일 것입니다. 나는 출력물이 어떻게 요구되는지에 따라 객체의 속성에 대해 다른 값을 얻고있다. 자바 스크립트 개체 속성 값은 표시 방법에 따라 다릅니다.

이 (필요하지만이 완전성을 위해서보다 여기에 제공 아마 배경 정보가 있습니다.)

나는에 정보 파일 콜라다 DAE (XML)를 읽어 three.js를 ColladaLoader.js를 사용하는 것을 시도하고있다 파이어 폭스는 분석 데이터를 기반으로 컬러링을 사용하여 기하학을 표시합니다. 플랫폼은 Windows 7입니다.

ColladaLoader.js에는 "Input"유형의 객체가 포함되어 있고 "tinput"이라는 "Input"객체의 인스턴스가 있습니다.

내 분석 데이터를 가져 오는 가장 좋은 방법을 이해하기 위해 노력한 결과 (https://collada.org/mediawiki/index.php/Extension 참조) ColladaLoader.js의 Polygons.prototype.parse 함수에 다음 행을 추가했습니다.

console.log('>tinput:', tinput, ' >tinput.source:', tinput.source, ' >tinput["source"]:', tinput["source"]); 

이 줄에서는 Firefox 콘솔에 "tinput"개체를 표시 한 다음 두 가지 방법을 사용하여 개체의 "source"속성을 표시하도록 요청합니다. 나는 전체 개체를 인쇄 할 때 내가 직접 "소스"속성을 인쇄 할 때 "소스"속성의 ​​값이 다르다는 것을

">tinput:" Object { semantic: "VERTEX", offset: 0, source: "XX", set: -1 } " >tinput.source:" "VV" " >tinput["source"]:" "VV" 

주의 사항 :이 발생합니다.

dae 파일에서 올바른 "source"값은 "VV"입니다 (참고 : ColladaLoader.js는 파운드 기호를 제거합니다). 는 XML 태그는 다음과 같습니다

<input source="#VV" semantic="VERTEX" offset="0"/> 

참고 :처럼 보이는 파일의 또 다른 청와대 XML 항목이 있습니다 : 구문 분석되고

<input source="#XX" semantic="POSITION"/> 

하지만 라인되지는 자바 스크립트를 따기 것처럼 보이지만 여기에서 "XX"를 올리십시오. 객체에서 다른 어떤 이런 식으로 행동하면

나는 그래서 내가 쓴보고 싶어 : 단지 "소스"속성 항복을 나타냅니다 어느

" iii = " "semantic" " tinput[iii] = " "VERTEX" ColladaLoader.js:3210 
" iii = " "offset" " tinput[iii] = " 0 ColladaLoader.js:3210 
" iii = " "source" " tinput[iii] = " "VV" ColladaLoader.js:3210 
" iii = " "set" " tinput[iii] = " -1 ColladaLoader.js:3210 
" iii = " "parse" " tinput[iii] = " function() ColladaLoader.js:3210 

: 결과

for(iii in tinput) { 
    console.log(' iii = ', iii, ' tinput[iii] = ', tinput[iii]); 
} 

표시 방법에 따라 다른 값.

나는 또한 시도 :

">tinput.valueOf():" Object { semantic: "VERTEX", offset: 0, source: "XX", set: -1 } 

과 : 굴복

console.log('>tinput.valueOf():', tinput.valueOf()); 

굴복

console.log(' >tinput.source.valueOf():', tinput.source.valueOf(), '>tinput["source"].valueOf():', tinput["source"].valueOf()); 

:

" >tinput.source.valueOf():" "VV" " >tinput["source"].valueOf():" "VV" 

여전히 동일한 불일치를 보여줍니다.

그리고도 시도는 "소스"("VV")의 정확한 값을 나타낸다

"tinput = " "{ 
    "semantic": "VERTEX", 
    "offset": 0, 
    "source": "VV", 
    "set": -1 
}" 

:

console.log('tinput = ', JSON.stringify(tinput, null, 2)); 

초래한다.

은 청와대 XML 파일의이 부분이 문제의 긴 데이터 필드 아래에 주어진

가 잘립니다 :

<source id="XX"> 
    <float_array count="16554" id="verts-points-array">26.47993 0.1520446 11.91956 26.42765 0.1342111 11.91947 (...) </float_array> 
    <technique_common> 
    <accessor count="5518" source="#verts-points-array" stride="3"> 
     <param type="float" name="X"/> 
     <param type="float" name="Y"/> 
     <param type="float" name="Z"/> 
    </accessor> 
    </technique_common> 
</source> 
<source id="analysis_data_source" name="per_vertex_results_data"> 
    <float_array count="16554" id="analysis-data-array">26.47993 0.1520446 11.91956 26.42765 0.1342111 11.91947 (...) </float_array> 
    <technique_common> 
    <accessor count="5518" source="#analysis-data-array" stride="3"> 
     <param type="float" name="P" semantic="PRESSURE" /> 
     <param type="float" name="T" semantic="TEMPERATURE"/> 
     <param type="float" name="VM" semantic="VON_MISES_STRESS"/> 
    </accessor> 
    </technique_common> 
</source> 
<vertices id="VV"> 
    <input source="#XX" semantic="POSITION"/> 
    <input source="#analysis_data_source" semantic="RESULTS"/> 
</vertices> 
<triangles count="2758" material="materialref"> 
    <input source="#VV" semantic="VERTEX" offset="0"/> 
    <p>150 141 163 151 150 164 152 151 165 153 152 (...) </p> 
</triangles> 

불일치가 쇼 "삼각형"내 "입력"태그 때 라인이 구문 분석 꼬리표. (XML 파일이 유효 함을 확인합니다.)

아무도 나에게 무슨 일이 일어나고 있는지 이해할 수 있도록 도와 주시겠습니까? "source"매개 변수에 액세스하는 방법에 따라 다른 값을 얻는 이유는 무엇입니까? (콜라다/XML과 관련이없는 경우도 있지만, 필자는이를 위해 포함시켜야한다고 생각했다.)

고마워.

편집 :

내가 게시물을 다시 읽어하고 나는 복잡한에 방법을 만들 생각 :

짧은 버전 : 감안할 때

:

console.log('tinput =', tinput); 
console.log('tinput.source =', tinput.source); 

연예인 :

"tinput =" Object { semantic: "VERTEX", offset: 0, source: "XX", set: -1 } 
"tinput.source =" "VV" 

"원본"속성 값이 다른 이유는 무엇입니까?

긴 게시물에 시간을 낭비하게되어 죄송합니다.

+0

글쎄, 나는 그 waaay가 필요 이상으로 복잡해 졌다고 생각한다. – dannyt

답변

1

글쎄 내 무지가 다시 나타납니다. 문제는 console.log가 어떻게 작동하는지 이해하지 못하기 때문에 생긴 것 같습니다. object.properties 값을 표시하기 위해 console.log를 사용하려고하면 console.log에 이상한 동작이있는 것 같습니다. console.log 행이 실행될 때 존재하는 객체 등록 정보의 값은 console.log에 표시되지 않습니다. 출력의 위치는 console.log 호출의 위치와 일치하지만보고 된 값은 스크립트 실행이 끝날 때 객체에있는 값입니다. 다음은 좀 더 자세한 설명입니다. console.log object at current state

감사합니다.

관련 문제