자바스크립트도 객체지향 언어이지만 클래스 기반 언어가 아닌 프로토타입 기반 언어입니다.
JavaScript에서 객체 생성 기사에서 언급했듯이 생성자를 사용하여 객체를 생성하는 데 문제가 있습니다. 즉, 동일한 생성자의 여러 인스턴스에 대해 동일한 메소드가 다르기 때문에 프로토타입을 사용하여 이를 홍보합니다. * 속성과 메소드는 모든 인스턴스 간에 공유 목적을 달성하기 위해 추출되고 캡슐화됩니다.
함수로 정의된 객체에는 프로토타입 속성이 있고, 프로토타입 속성은 프로토타입 객체를 가리킵니다. 프로토타입 객체에는 생성자 속성이 있으며, 이 생성자 속성은 생성자 객체를 가리키며, 이 생성자 객체는 바로 함수 자체입니다.
의사 코드는 다음과 같습니다:
var 함수{
프로토타입: 프로토타입{
생성자: 생성자 == 함수
}
}함수와 프로토타입의 관계
js에서 함수를 생성하면 프로토타입 속성이 자동으로 생성됩니다. 이 속성은 프로토타입 객체를 가리킵니다. 함수 및 프로토타입 객체 함수를 가리키는 생성자 속성이 자동으로 획득됩니다.
예: 이전 프로토타입 모드를 예로 들어 객체를 생성합니다.
lt;script type="text/javascript"gt;
function Person( ){
}
Person.prototype.name="lxy"
Person.prototype.age=22; .prototype .job="소프트웨어 엔지니어";
Person.prototype.sayName=function(){
경고(this.name);
}< /p >
var lxy=new Person();
lxy.sayName();
var personA=new Person();
personA .sayName ();
Alert(lxy.sayName()==personA.sayName());//true
lt;/scriptgt;인스턴스와 프로토타입의 관계< /p>
생성자를 통해 생성자의 프로토타입 객체를 가리키는 속성(포인터)을 포함하는 인스턴스를 만듭니다.
예: Person 생성자 인스턴스 Person1과 Person2의 [[Prototype]] 특성은 모두 Person의 프로토타입을 가리킵니다.
참고: [[Prototype]] 연결은 인스턴스와 생성자 사이가 아니라 인스턴스와 생성자의 프로토타입 사이에 존재합니다.
이 포인터와 관련하여 ECMA-262에서는 [[Prototype]]이라고 합니다. [[Prototype]]에 액세스하는 표준 방법은 없지만 Firefox, Safari 및 Chrome은 각 객체에 __protp__ 속성을 지원합니다. . 다른 구현에서는 이 속성이 스크립트에 표시되지 않습니다.
' 메이' txt 전집 다운로드