2013-04-26 3 views
1

안녕하세요 저는 자바 스크립트 프로토 타입 체인에서 최상위 수준 (또는 상위 수준의 수준) 프로토 타입을 검색하는 "더 깨끗한"방법이 있는지 궁금합니다.javascript 프로토 타입 체인의 최상위 프로토 타입 검색

var a = Object.create(Object.prototype, {'class' : {value : 'a'}}); 
    var b = Object.create(a, {'class' : {value : 'b'}}); 
    var c = Object.create(b, {'class' : {value : 'c'}}); 

나는 C에서 얻을 수있는 루프를 작성하지 않고 :

문제

주어진 것입니다?

var topClass = c; 
    while (Object.getPrototypeOf(topClass) !== Object.prototype) { 
    topClass = Object.getPrototypeOf(topClass); 
    } 
    console.log('expect this to be true: '+ a === topClass); 

답변

2

나는 루프를 작성하지 않고 C에서 얻을 수 있습니까?

아니요, 지금까지 한 일을해야합니다. 아래로 내려가거나 (맨 위, 어느 쪽이든 원하는 것을 선택하십시오.)

브라우저 컨텍스트에서이 작업을 수행하는 경우 따옴표로 묶은 코드가 다른 창에서 작성된 객체로 작업하는 경우 루프가 안정적으로 작동하지 않는다는 점을 지적 할 가치가 있습니다. 하나의 윈도우의 Object.prototype은 다른 윈도우의 Object.prototype이 아닌 ===입니다. 하지만 중요한 것은 A) 브라우저에서이 작업을 수행하는 경우와 B) 다른 창에서 객체를 수행하는 경우 일 수 있습니다. (만약 당신이 중요하다면, 당신이 돌아올 때까지 루프를 할 수 있습니다. null 그리고 그 이전의 두 레벨이 첫 번째 non Object 프로토 타입이라고 가정합니다 ...)

+0

@ tj- crowder 그걸 몰랐어! – Renaud