JavaScript 프로토타입 학습 요약_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:17:32
원래의
901명이 탐색했습니다.

각 객체에는 상위 객체의 프로토타입(객체를 구성하는 함수)(여기서는 상위 프로토타입 또는 암시적 프로토타입이라고 함)을 가리키는 암시적 속성이 있으며, 그 속성과 메서드를 상속받습니다. , 함수 개체에는 명시적인 프로토타입 참조도 있습니다.] 일반적인 상황에서는 개체의 부모 프로토타입에 액세스할 수 없지만 FunctionName.prototype을 통해 함수 개체의 명시적인 프로토타입에 액세스할 수 있습니다. [FireFox에서는 개체의 부모에 액세스할 수 있습니다. 객체의 __proto__ 속성을 통한 프로토타입]

이 프로토타입 속성 자체는 객체 유형 객체이므로 임의의 속성을 추가할 수 있으며 메서드를 사용하면 인스턴스 객체가 이를 상속받을 수 있습니다.

예: 문자열 유형 객체는 String.prototype입니다. 문자열 유형 객체에 일부 사용자 정의 메소드를 추가하려면 다음과 같이 구현할 수 있습니다(여기에는 클래스와 유사한 VBscript에 트림 메소드를 추가하는 예가 있습니다)

코드 복사 코드는 다음과 같습니다.

String.prototype.trim=function(){
return this.replace(/^s*|s*$/g,"")
}
// " jiangsk540 ".trim();//return "jiagnsk540"

위 기능을 제공하는 것 외에도 프로토타입은 유사한 인스턴스 객체 그룹이 속성과 메서드를 공유할 수 있는 메커니즘도 제공합니다. 이는 정적 속성 또는 정적 함수와 동일하며, 이를 사용하여 생성된 인스턴스 객체 수에 관계없이 생성자에서 프로토타입에 정의된 속성 및 메소드는 처음부터 끝까지 한 번만 정의됩니다. 모든 인스턴스 객체는 이 속성 또는 메소드의 사용을 공유하지만 C와 동일하지 않거나 JAVA의 정적 속성 또는 정적 함수와 동일한 개념입니다. ]
코드 복사 코드는 다음과 같습니다.

function Class1(이름){
this.name = 이름;
}
Class1.prototype.show=function(){
alert("name=" this.name)
}
var m1 = new Class1 ("jiangsk540");
var m2 = new Class1("haired lion");
alert(m1.show===m2.show);//참 표시

생성자 프로토타입에 동적으로 추가된 속성이나 메소드는

코드 복사와 같이 이전에 생성된 객체에서 즉시 호출할 수 있습니다. 코드는 다음과 같습니다.

function Class1(name){
this.name = name
}
Class1.prototype.show=function( ){
Alert("name=" this.name);
}
var m1 = new Class1("jiangsk540")
Class1.prototype.say=function(){
Alert("안녕하세요" );
}
m1.say()//호출 성공
/*
참고: 생성자의 프로토타입에 추가된 속성이나 메서드만 생성된 객체에서 사용할 수 있습니다. 즉시 호출하는 것과 같습니다
생성자 프로토타입의 참조를 변경하면 생성된 객체에서 즉시 호출할 수 없습니다
*/
Class1.prototype={newP:"jiangsk540"}
alert( m1.newP) //정의되지 않음
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿