이 기사에서는 모든 사람에게 도움이 되기를 바라며 주로 텍스트와 코드 형식으로 js의 상속 지식에 대한 자세한 설명을 공유합니다.
생성자, 인스턴스 및 프로토타입 간의 관계를 이해합니다. 생성자의 프로토타입과 인스턴스는 프로토타입을 가리키고, 프로토타입의 생성자는 생성자를 가리킵니다.
하위 클래스는 메서드와 속성을 재사용해야 합니다. of the parent class
생성된 프로토타입은 상위 클래스의 인스턴스를 가리키며 하위 클래스는 이 인스턴스를 통해 상위 클래스의 속성과 메서드에 액세스할 수 있습니다. 이 관계는 점진적으로 계층별로 형성되어 프로토타입 체인을 형성합니다.
function Super(name) { this.name = "name"; this.superproperty = true; } Super.prototype.getSuperName = function () { return this.name; } Super.prototype.getSuperproperty = function () { return this.superproperty; } function Sub(name) { this.name = name; this.subproperty = false; } //继承 Sub.prototype = new Super(); Sub.prototype.getSubName = function () { return this.name; } Sub.prototype.getSubproperty = function () { return this.subproperty; } var instance = new Sub("ctc"); console.log(instance.getSuperproperty());//true console.log(instance.getSubproperty());//false console.log(instance.getSuperName());//ctc console.log(instance.getSubName());//ctc
기본 프로토타입 객체
모든 인스턴스에는 기본 프로토타입 객체가 있으므로 super.prototype.prototype은 Object의 프로토타입을 가리켰을 뿐입니다//继承 Sub.prototype = new Super();
Sub.prototype.getSubName = function () { return this.name; } Sub.prototype.getSubproperty = function () { return this.subproperty; }
단점
상위 클래스의 인스턴스 속성은 하위 클래스의 프로토타입 속성이 되어 공유됩니다.
만들기 하위 클래스 인스턴스를 만들 때 모든 인스턴스에 영향을 주지 않으면서 매개 변수를 상위 클래스에 전달할 수 없습니다.
생성자 차용
function Super(name) { this.name = name; } Super.prototype.getSuperName = function () { return this.name; } function Sub(name) {
Super.call(this,name);
this.name = name;
그런 다음 하위 클래스에서 하위 클래스 Points의 프로토타입을 상위 클래스의 인스턴스에 추가합니다. 하위 클래스의 생성자는 상위 클래스의 구조를 차용하므로 하위 클래스의 각 인스턴스는 고유한 특성을 가지지만 메서드는 공유됩니다.
function Super(name) { this.name = name; this.superproperty = true; } Super.prototype.getSuperName = function () { return this.name; } function Sub(name) { Super.call(this,arguments); this.name = name; this.subproperty = false; } //继承 Sub.prototype = new Super();
// Sub.prototype.constructor = Sub;//如果此处未绑定,上一句重写了原型,Super的实例的constructor指向的自然是Super
Sub.prototype.getSubName = function () { return this.name;}var 인스턴스 = new Sub("ctc");
프로토타입 상속
function object(o) { function F() { } F.prototype = o; return F; }
이해: F는 함수이자 객체입니다. 해당 프로토타입은 object()에서 허용하는 o를 가리키고 반환된 F는 프로토타입이 o를 가리키는 객체입니다.
Order: Object.creat()는 위 함수를 표준화합니다. 즉, Object.creat(o)도 위 코드를 구현합니다
기생 상속
프로토타입 상속을 기반으로 이 객체가 강화됩니다
function creatAnother(o) { var clone = Object.create(o); clone.name = "ctc"; clone.sayname = function () { console.log(this.name); } return clone; }
function inherit(SubType,SuperType) { var prototype = Object.create(SuperType); prototype.constructor = SubType; SubType.prototype = prototype; }
Sub.prototype = new Super();
inherit(Sub,Super);
위 내용은 js의 상속 지식에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!