2013-04-24 4 views
1

을 사용할 지 항상 객체의 속성 인 __proto__prototype을 혼동했습니다. 특히 프로토 타입 상속 체인에서 test이라는 객체가 있고 그 코드가 아래에 있다고 가정 해 봅시다.언제 __proto__를 언제 사용하고 언제 프로토 타입

test.add();//try to call a method name add. 

필자는 필자가 검색의 흐름을 데모하기 위해 다이어그램을 그린다. 그러나 그것이 옳은지 나는 확신 할 수 없다. 그것을 검토하는 데 도움이된다. 감사.

enter image description here

은 Minko Gechev의 대답에 기초하여 정정.

enter image description here

+0

가능한 복제본 [Java 스크립트의 프로토 타입과 \ prototype \ _ \ _의 차이점] (http://stackoverflow.com/questions/9959727/what-is-the-difference-between- proto-and-prototype-in-java-script) – Bergi

답변

3

만 기능 prototype 속성이 있지만 목적은 __proto__ 속성이 있습니다.

보통 __proto__ 속성을 Object.create과 같이 더 잘 사용하도록 변경하는 것은 좋지 않습니다.

을 : 당신은 생성자 함수 Person로 만드는 모든 개체가 우리가 말할 수있는 결론으로 ​​ proto

에 참조 __proto__ 속성이됩니다 이런 식으로

function Person() { 
} 
var proto = { bar: 'baz' }; 
Person.prototype = proto; 

: 여기

은 예입니다

prototype 속성은 생성자 함수에만 사용되며이 생성자 fu로 생성 될 모든 개체의 __proto__ 속성을 설정합니다 . 통역사가 주어진 객체의 속성을 찾을 때 foofoo 이후에 foo.__proto__ 객체를 사용하고 그 후에는 foo.__proto__.__proto__과 같이 속성을 찾습니다.

+0

+1 다이어그램의 검색 흐름이 맞습니까? 감사. –

+1

정확하지 않습니다. 'prototype' 속성은 생성자 함수에만 사용됩니다. 객체의 속성을 찾을 때'foo .__ proto __.__ proto__' 다음에'foo .__ proto__' 다음에'foo'를 사용합니다. –

+0

:) 위대한 대답, 지금은 그것을 해결했습니다. 맞아? –

관련 문제