2013-08-07 1 views
2

classList의 속성이 Element.prototype이 아닌 이유는 무엇입니까? 요소는 classList 속성을 가지고 있기 때문에 자동으로 요소의 prototype에 있다고 가정하지만 분명히 그렇지 않습니다. 그럼 어디 있니?Javascript : classList가 Element.prototype의 속성이 아닌 이유

크롬의 콘솔 :

그것은 그것이 Element 프로토 타입 인 경우 모든 요소가 단지 Array.length으로, 같은 클래스 목록을 공유 때문에, 각 Element 인스턴스의 속성이어야
> Element.prototype.classList 
undefined 
> document.createElement().classList 
DOMTokenList 
+0

모든 요소마다 고유 한 클래스 목록이 있기 때문에? getter 메소드가 아니라 데이터 속성입니다. – Bergi

답변

3

속성이 각 배열 인스턴스에 있어야하거나 모든 배열의 길이가 같아야합니다. 프로토 타입의 요점은 동일한 유형의 모든 객체가이를 공유한다는 것입니다.

2

nnnnnn의 답변에는 대부분의 인스턴스 변수가 생성자에 할당되어 있습니다.

function foo(){ 
    this.bar = "baz"; 
} 

foo.prototype.bar // undefined 
new foo().bar // "baz" 

함수는 프로토 타입에 추가됩니다 (일반적으로 생성자에서 설정할 수도 있음).

+0

감사합니다. 이것은 @ nnnnnn의 대답에 필요한 추가 사항입니다. –

관련 문제