2016-08-25 11 views

답변

2

Document WebIDL 인터페이스에 대한 정의의 일부는 그것이 named property getter를 갖는 것을 지정한다. the section of the spec of the HTML spec that defines the supported property names for the Document interface과 결합하여 의미가 있습니다.

이들은 모두 Document의 명명 된 속성으로 노출되는 몇 가지 항목을 지정합니다.

<!doctype html> 
<form name=foo></form> 
<form name=bar></form> 
<iframe name=bar></iframe> 
<p id=baz> 

전화 할 경우

document.foo 단일 요소를 다시 얻을 것이다는 form name=foo 요소 :

는 다음과 같은 문서를 생각해 보자.

document.bar으로 전화하면 form name=bar 요소와 iframe name=bar 요소가 모두 포함 된 컬렉션을 다시 가져올 수 있습니다.

그리고 당신은 호출하는 경우 document.baz 당신은 다시 undefined 얻을 수 있습니다.

모든 행동에 대한 이유는 section of the HTML spec defining the supported property names for the Document interfaceform[name] 값과 iframe[name] 값이 Document

그리고 that spec section의 명명 된 속성으로 액세스 할 수 있는지 지정은 또한이 Document라는 이름의 속성이 그 단 하나의 요소에 일치하는 경우는 말한다 요소가 반환되지만 여러 요소와 일치하는 경우 컬렉션이 반환됩니다. that spec sectionDocument의 명명 된 속성으로 액세스 할 것으로 p[id] 값을 지정하지 않기 때문에

그리고 이유 document.baz 반환 undefined이다.

그러나 window.baz을 입력하면 이되고 p id=baz 요소가 반환됩니다.

그 차이에 대한 이유는 다음 WebIDL definition for Windownamed property getter합니다 (Document WebIDL가하는 것처럼), Document 대한 유사한 부분 -unlike section defining the supported property names for Window 데 지정하면서 - 실제로 p[id] 값 (의 id 값을 지정 않는다 임의의 요소)는 Window의 명명 된 속성으로 액세스 할 수 있습니다.