프로토타입 및 프로토타입 체인 관련 내용 설명

jacklove
풀어 주다: 2018-06-11 22:30:35
원래의
2386명이 탐색했습니다.




여기서 프로토타입은 시스템과 함께 제공되는 속성을 나타냅니다. 첫 번째 문장은 Person의 조상이 Lastname 속성을 갖도록 설정되었음을 의미합니다. 이 속성 값을 상속받습니다



작은 예는 상속 관계를 보여줍니다

프로토타입은 매번 생성하는 대신 일부 객체에 공통된 것을 한 번만 작성할 수 있습니다




또한 프로토타입을 캡슐화할 수 있으므로 더 좋습니다.




이전 예의 생성자는 시스템과 함께 제공되는 속성( 생성자), 그는 프로토타입에서 상속되었으며, 그 내용은 생성자입니다. 연한 보라색은 시스템 자체의 내용을 나타냅니다. _ 의 내용은 프로토타입의 내용입니다(두 개의 __ 은 암시적 명명 규칙입니다)

일반적으로 개발 중에 동료가 매개변수에 액세스하거나 변경하는 것을 원하지 않으면 매개변수 이름을 이와 같이 지정하는 것이 좋습니다. js private



다음은 ff가 person.prototype




에 있는 값에 액세스할 수 있도록 __proto__를 수정하는 예입니다.

여기 Person.name에 액세스하는 것은 여전히 ​​맑을 것입니다. 왜냐하면 이 예는


전체 프로토타입의 구조가 변경되었지만 두 번째 체리로 변경되기 전에는


이었습니다. new, this {}의 값은 사람에게 반환되며, 체리로 변경되어도 영향을 받지 않으므로 이 압력에 대해서는 실행 순서를 고려해야 합니다.

하지만 함수 문의 순서를 변경하면

실행 순서가 변경되었기 때문에 person.name이 체리가 됩니다.

하지만 이렇게 수정하면 수정이 성공할 수 있습니다

프로토타입 체인


프로토타입 체인인데 프로토타입 노드를 통해 연결되어 아들이 성에 접근할 수 있게 되었는데 사실 Grand에는 프로토타입이 있고 Grand가 있습니다. .prototype=object 객체는 모든 프로토타입 체인의 터미널입니다







new는 사람에게 속하므로 이것은{} 사람에게 반환됩니다.

person.__proto__는 Person.prototype에 연결되어 있으므로 변경되지 않은 상태로 유지됩니다(즉, Person.prototype은 직접 수정 외에는 변경할 수 없습니다)





사람은 sayName



Object.create(프로토타입)


이 경우 Person에서 프로토타입에 액세스할 수 있지만


내부 데이터에는 액세스할 수 없습니다. 그리고

은 다음과 같이 액세스할 수 있습니다.


전에 다음과 같은 말이 있습니다.
대부분의 개체는 궁극적으로 Object.prototype에서 상속됩니다


그러나 모든 개체가 Object.prototype에서 상속되는 것은 아닙니다. 다음과 같은 예외가 있기 때문입니다.


여기서 케이스:


obj __proto__이 없습니다

__proto__를 수동으로 추가하는 경우:

하지만 이것이


obj.name을 찾을 수 없습니다. 이 데이터에 액세스할 수 있는 유일한 방법은



/************************************************** ************************************************** ***********/

확장자:

toString() 메서드:

toString() 메서드는 Object.prototype에 내장되어 있으므로 대부분의 객체에는 이 메서드가 있습니다(정의되지 않음 및 null 제외)

이 두 메서드는 Object.prototype의 프로토타입을 상속할 수 없습니다. 패키징 클래스를 통해 개체를 생성하므로 액세스할 수 없습니다.

숫자는 다음 방식으로만 접근할 수 있습니다.

숫자의 '.'는 우선순위가 높기 때문에 시스템은 이를 소수점(부동 소수점 유형)으로 간주합니다. , 그래서 오류가 보고됩니다

그리고 부울 유형은 바로 다음과 같을 수 있습니다


자세히 분석해 보겠습니다.


num.toString(), 패키징 클래스가 나타납니다. :

사실 Number 프로토타입에는 재정의된 toString() 메소드가 있습니다:


프로토타입 체인에 따르면 Number 프로토타입의 __proto__는 Object의 프로토타입을 상속합니다.


따라서 num.toString() 메서드가 호출되면 한 수준 위로 올라갑니다. Number


에 있는 이 함수의 프로토타입을 다시 연습해 보겠습니다.



여기서 호출해야 할 내용은 다음과 같습니다.


ToString 메서드는 다음에서 상속됩니다. 여기에서 object.prototype을 자르려면:


이 메서드를 다시 작성하세요.

결과:



다음은 자동으로 다시 작성된 일부입니다.


마지막으로 작은 버그에 대해 이야기해 보겠습니다.


이것은 js의 정확성이 부정확하기 때문입니다.
이 기사에서는 프로토타입 및 프로토타입 체인의 관련 내용을 설명합니다. PHP 중국어 웹사이트로 이동합니다.

관련 권장사항:

JQuery의 DOM 작업 - Wrap

django는 요청을 사용하여 브라우저에서 보낸 매개변수를 가져옵니다.

React 이 바인딩에 대한 몇 가지 생각

위 내용은 프로토타입 및 프로토타입 체인 관련 내용 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿