여기서 프로토타입은 시스템과 함께 제공되는 속성을 나타냅니다. 첫 번째 문장은 Person의 조상이 Lastname 속성을 갖도록 설정되었음을 의미합니다. 이 속성 값을 상속받습니다
작은 예는 상속 관계를 보여줍니다
프로토타입은 매번 생성하는 대신 일부 객체에 공통된 것을 한 번만 작성할 수 있습니다
또한 프로토타입을 캡슐화할 수 있으므로 더 좋습니다.
이전 예의 생성자는 시스템과 함께 제공되는 속성( 생성자), 그는 프로토타입에서 상속되었으며, 그 내용은 생성자입니다. 연한 보라색은 시스템 자체의 내용을 나타냅니다. _ 의 내용은 프로토타입의 내용입니다(두 개의 __ 은 암시적 명명 규칙입니다)
에 있는 값에 액세스할 수 있도록 __proto__를 수정하는 예입니다.
여기 Person.name에 액세스하는 것은 여전히 맑을 것입니다. 왜냐하면 이 예는
하지만 함수 문의 순서를 변경하면
실행 순서가 변경되었기 때문에 person.name이 체리가 됩니다.
프로토타입 체인
new는 사람에게 속하므로 이것은{} 사람에게 반환됩니다.
person.__proto__는 Person.prototype에 연결되어 있으므로 변경되지 않은 상태로 유지됩니다(즉, Person.prototype은 직접 수정 외에는 변경할 수 없습니다)
사람은 sayName
Object.create(프로토타입)
이 경우 Person에서 프로토타입에 액세스할 수 있지만
내부 데이터에는 액세스할 수 없습니다. 그리고
은 다음과 같이 액세스할 수 있습니다.
전에 다음과 같은 말이 있습니다. 대부분의 개체는 궁극적으로 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 작업 - Wrapdjango는 요청을 사용하여 브라우저에서 보낸 매개변수를 가져옵니다.
위 내용은 프로토타입 및 프로토타입 체인 관련 내용 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!