소개하다
프로토 타입은 프로토 타입 인스턴스로 생성 된 객체의 유형을 나타냅니다.이 프로토 타입을 복사하여 새 개체를 만듭니다.
텍스트
프로토 타입 모드의 경우 JavaScript의 고유 한 프로토 타입 상속 기능을 사용하여 객체를 만들 수 있습니다. 즉, 하나의 객체가 다른 객체의 프로토 타입 속성 값으로 생성됩니다. 프로토 타입 객체 자체는 각 생성자가 생성 한 객체를 효과적으로 활용합니다. 예를 들어, 생성자 프로토 타입에 이름 속성 (아래 예제 참조)이 포함 된 경우이 생성자를 통해 생성 된 개체는이 속성을 갖습니다.
기존 문헌에서 프로토 타입 패턴의 정의를 살펴보면 자바 스크립트가 없습니다. 많은 설명이 수업에 관한 것이지만, 현실은 프로토 타입 상속을 기반으로 한 JavaScript가 클래스의 개념을 완전히 피한다는 것입니다. 우리는 단순히 기존 객체를 복사하여 개체를 만듭니다.
실제 프로토 타입 상속은 ECMAScript5 표준의 최신 버전으로 제안됩니다. 객체. 생성 메소드는 그러한 객체를 만드는 데 사용됩니다. 이 메소드는 지정된 객체를 만듭니다. 객체의 프로토 타입에는 지정된 객체 (즉, 메소드에 의해 전달되는 첫 번째 매개 변수 객체)가 있으며 다른 선택적 지정된 속성을 포함 할 수도 있습니다. 예를 들어, Object.Create (프로토 타입, 옵션 AldscriptorObjects)는 다음 예 에서이 사용법을 볼 수 있습니다.
코드 사본은 다음과 같습니다.
// 생성자가 아니기 때문에 대문자가 될 필요는 없습니다.
var somecar = {
드라이브 : function () {},
이름 : 'Mazda 3'
};
// 객체로 새 차를 만듭니다
var othercar = object.create (somecar);
exercar.name = 'Toyota Kami';
Object.create는 다른 객체에서 직접 상속합니다. 이 메소드의 두 번째 매개 변수를 사용하면 추가 속성을 초기화 할 수 있습니다. 예를 들어:
코드 사본은 다음과 같습니다.
var 차량 = {
getModel : function () {
Console.log ( '차량의 곰팡이는' + this.Model);
}
};
var car = object.create (차량, {
'ID': {
값 : my_global.nextid (),
열거 가능 : true // 기본적으로 쓰기 가능 : false, configurable : false
},
'모델': {
가치 : '포드',
열거 가능 : 사실
}
});
여기서는 객체 리터럴을 사용하여 객체의 두 번째 매개 변수에서 전달할 수 있습니다. 객체 리터럴을 사용하여 초기화 할 추가 속성을 입력하고 구문은 Object.DefineProperties 또는 Object.DefineProperty 메소드 유형과 동일합니다. 열거 가능한, 쓰기 가능 또는 구성 가능성과 같은 속성의 속성을 설정할 수 있습니다.
객체를 사용하는 대신 프로토 타입 모드를 직접 구현하려면 직접 만듭니다. 다음과 같은 코드를 사용하여 위의 예를 구현할 수 있습니다.
코드 사본은 다음과 같습니다.
var VehiclePrototype = {
init : function (carmodel) {
this.model = carmodel;
},
getModel : function () {
Console.log ( '차량 금형은' + this.model);
}
};
기능 차량 (모델) {
함수 f () {};
F. prototype = 비히클 프로로 타입;
var f = 새로운 f ();
f.init (모델);
반환 f;
}
var car = 차량 ( '포드 에스코트');
car.getModel ();
요약
JavaScript에서 프로토 타입 모드를 사용하는 것은 단순히 유비쿼터스입니다. 다른 많은 모드도 프로토 타입을 기반으로하므로 많이 말하지 않을 것입니다. 여기에주의를 기울여야 할 것은 인용 문제를 피하기 위해 얕은 사본과 딥 카피의 문제입니다.