JavaScript에서는 프로토 타입을 사용하여 상속을 달성 할 수 있습니다.
예를 들어
함수 baz () {this.oo = "";} 함수 foo () {} foo.prototype = new baz (); var myfoo = new foo (); myfoo.oo;이런 식으로 우리는 baz의 속성에 액세스 할 수 있습니다. 프로토 타입의 공유 특성으로 인해 실제 사용에서는 불가능합니다 (데이터는 힙에 저장),
모든 인스턴스는 프로토 타입을 사용하지만 일단 BAZ 속성에 참조 유형이 있으면 비극적입니다. 한 인스턴스가 수정되면 다른 인스턴스도 변경됩니다 ... Wuwuwu
자연스럽게 조합 상속이있을 것입니다
함수 baz () {this.oo = "";} baz.prototype.xx = function () {} function foo () {baz.call (this); // 두 번째 호출} foo.prototype = new Baz (); // 첫 번째 호출 var myfoo = new foo (); myfoo.oo; myfoo.xx;이것은 문제가있을 것이며, 코드는 또한 BAZ가 두 번 호출 될 것임을 보여줍니다. 처녀 자리는 어떻게 그것을 허용 할 수 있습니까?
문장을 추가하면 두 번째 방법이 첫 번째 방법에 문제가 없을 필요가 없습니까? 대답은 아니오입니다.
그 이유는 속성 검색이 객체 자체로 시작하기 때문입니다. 찾을 수없는 경우에만 프로토 타입에서 찾을 수 있습니다. 호출 할 때 속성이 상속됩니다.
다른 문장을 추가하겠습니다. 그러면 이와 같은 호출 상속을 사용하기에 충분하지 않습니까? 프로토 타입을 사용하지 않으면 가능하지만 프로토 타입을 처녀 자리로 어떻게 사용할 수 없습니까?
이 방법은 프로토 타입에서 공유되므로 성능이 훨씬 향상됩니다.
기생 조합 상속
__extends = function (p, c) {function ctor () {this.constructor = c; // 할당 생성기} ctor.prototype = prototype; c.prototyp = new ctor ();} 함수 baz () {this.oo = [1];} baz.prototyp.xx = function () {} __ extends (baz, foo); foo () {baz.call (this);} var myfoo = new foo (); myfoo.oo; myfoo.xx;이것은 두 호출의 문제를 해결할뿐만 아니라 객체가 생성자를 호출 할 때 객체를 생성하는 실제 함수가 프로토 타입 체인의 다른 생성자 대신 호출된다는 문제를 해결합니다.
코드에는 진술이 있습니다.
생성자는 프로토 타입 객체의 속성이며 객체의 제작자입니다. 프로토 타입 속성이 재 할당되므로 생성자는 상속됩니다.
여기서 나는 객체가 어떻게 만들어 졌는지, 즉, 새로운 일에 대해 이야기하고 싶습니다.
예를 들어:
var a = 새로운 b ();
실제로, 그것은 a = {}와 같습니다. A에 대한 A를 생성 한 다음 B.call (a); 호출 초기화 a. 호출 전의 또 다른 단계가 있습니다. 이것은 a의 내부 프로토 타입 객체입니다.
프로토 타입 속성이 B 포인트로 설정된 프로토 타입 객체. 프로토 타입에는 생성자 속성이 있으며 객체 할당 메모리 컨트롤을 작성하는 데 사용됩니다.
아마 모든 일 것입니다 ... 아직 늦었습니다. 침착하게 마음을 유지하고 참을성이 없어도됩니다. 내일 바뀌기 위해 열심히 노력하고 모든 것이 점차 나아지기를 바랍니다.
위의 내용은 편집자가 JavaScript의 상속 (필수)에 대한 포괄적 인 이해에 대해 귀하에게 제공하는 모든 내용입니다. 모두가 풋 스텝 홈을 더 지원하기를 바랍니다.