먼저 객체 obj를 정의하고 객체의 프로토 타입은 obj._proto_입니다. ES5의 getPrototype 방법을 사용하여 OBJ의 프로토 타입을 쿼리 할 수 있습니다. 우리는 OBJ의 프로토 타입이 OBJ의 프로토 타입이 존재하는지 증명하기 위해 객체와 동일인지를 증명합니다. 답은 참으로 반환되므로 존재합니다. 그런 다음 함수 foo ()를 정의하고 모든 함수에는 프로토 타입 객체, 즉 기능 프로토 타입이 있습니다. 기능 프로토 타입에 속성을 추가 한 다음 새로운 인스턴스화 객체로 속성을 공유 할 수 있습니다 (다음 두 예제는 자세히 도입됩니다).
함수 foo () {} foo.prototype.z = 3; var obj = new foo (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3typeof obj.tostring; //functionObj.valueof (); // foo {x : 1, y : 2, z : 3} obj.hasownproperty ( 'z'); //거짓여기서 OBJ의 프로토 타입 (_PROTO_)은 FOO 함수의 프로토 타입 속성을 가리키고 FOO.POOTOPOTOTE의 프로토 타입은 Object.Prototype을 가리키며 프로토 타입 체인의 끝은 무일합니다. HasownProperty를 통해 Z 속성이 OBJ에 있는지 확인할 수 있습니다. 거짓을 보여줍니다. OBJ에는 Z 속성이 없지만 프로토 타입 체인을 찾아 FOO.prototype에 있음을 발견했습니다. 따라서 OBJ.Z = 3, 그리고 첫 번째 사례 OBJ.Valueof () 및 ToString은 객체에 있으므로 모든 객체의 프로토 타입이 객체의 프로토 타입이기 때문에이 두 특성을 가지고 있습니다. 물론 다음과 같은 특별 사건을 제외하고
var obj2 = object.create (null); obj2.valueof (); //한정되지 않은
object.create ()는 빈 객체를 생성 하고이 개체의 프로토 타입은 매개 변수를 가리 킵니다. 다음 포괄적 인 예는 다른 클래스를 상속하기 위해 클래스를 구현하는 방법을 보여줍니다.
// 생성자 개인 기능을 선언합니다 (이름, 나이) {this.name = name; this.age = age; age;} person.prototype.hi = function () {console.log ( 'hi, 내 이름은' +this.name +', 내 나이는' +this.ge);}; person.prototype.legs_num = 2; person.arms_num = 2; person.prototyp.walk = function () {this.log (this.log) {console.log. ! ');}; 기능 학생 (이름, 나이, 클래스 나머) {person.call (this, name, age); this.classnum = classnum;} // 빈 객체를 만듭니다. 학생 .prototype = object.create (person.prototype); // 생성자는 객체를 만들기 위해 함수를 지정합니다. 학생 .prototype.constructor = whiply; whient. 대상 Bosnvar Bosn = 신입생 ( 'Bosn', 27, 'class 3'); Bosn.hi (); // 안녕하세요, 제 이름은 Bosn이고, 내 나이는 27 세이고 내 수업은 Class 3Bosn.legs_num입니다. //2bosn.walk (); // Bosn은 걷고 있습니다! bosn.learns ( 'math'); // Bosn은 수학을 배우고 있습니다생성자 사람과 학생은 인스턴스화 된 객체 (BOSN)에 대한이 지점 이며이 객체의 프로토 타입은 생성자의 프로토 타입을 가리 킵니다.
Object.create () 메소드를 사용하여 빈 객체를 생성 하고이 객체의 프로토 타입은 person.prototype입니다. 이것을 작성하는 장점은 Subclass 학생이 기본 클래스 사람을 상속하기 때문에 Person.prototyp 속성에 영향을 미치지 않으면 서 Studnet.prototype의 속성을 스스로 만들 수 있으며 Person.prototype의 원래 속성을 상속받을 수 있다는 것입니다. person.prototype = student.prototype를 직접 씁니다. 두 사람은 동시에 물체를 가리 킵니다. 학생에 속성을 추가하는 동안 프로토 타입에 동일한 속성이 사람의 프로토 타입 체인에 추가됩니다.
생성자 학생의 통화 메소드의 경우,이 내부는 새로 생성 된 학생의 인스턴스화 된 대상을 가리키고 통화를 상속합니다.
Student.prototype.constructor = Student,이 문장의 의미는 학생이 Student.Prototype 객체를 만드는 기능임을 지정하는 것입니다. 이 문장을 쓰지 않으면 대상의 기능은 여전히 사람입니다.
상속을 구현하는 세 가지 방법이 있습니다.
기능인 (이름, 나이) {this.name = 이름; this.age = age;} function student () {} student.prototype = person.prototype; //1student.prototype = object.create (person.prototype); //2student.prototype = new Person (); // 3위의 JS 프로토 타입 체인 및 상속 분석 (첫 번째 경험)은 내가 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.