Home > Web Front-end > JS Tutorial > JS inheritance method--case description

JS inheritance method--case description

php是最好的语言
Release: 2018-08-08 09:19:03
Original
1608 people have browsed it

1. Prototype chain: Use prototypes to let one reference type inherit the properties and methods of another reference type

Each constructor has a prototype object, and the prototype object contains a pointer to the constructor pointer, and instances contain an internal pointer to the prototype object.

Basic pattern for implementing originality chain:

function SuperType(){
    this.colors =[“red”, “blue”, “green”];
}
function SubType(){
}
SubType.prototype = new SuperType();
var instance1 = new SubType();
instance1.colors.push(“black”);
alert(instance1.colors);  //red, blue, green, black
var instance2 = new SubType();
alert(instance2.colors);   //red, blue, green, black
Copy after login
Copy after login

The final result: intance points to the prototype of SubType, and the prototype of SubType points to the prototype of SuperType, and SuperType inherits Object

The default prototype of all functions is an instance of Object

Problem: There will be problems with reference type values

For example, if an instance of a subclass is created, if If the attributes of a subclass instance are modified, then other subclasses will be affected when creating them. The code is as follows:

function SuperType(){
    this.colors =[“red”, “blue”, “green”];
}
function SubType(){
}
SubType.prototype = new SuperType();
var instance1 = new SubType();
instance1.colors.push(“black”);
alert(instance1.colors);  //red, blue, green, black
var instance2 = new SubType();
alert(instance2.colors);   //red, blue, green, black
Copy after login
Copy after login

The above results indicate that the attribute values ​​​​of other instances will be affected

2. Borrowing the constructor: calling the supertype constructor inside the subtype constructor

function SuperType(){
    this.colors =[“red”, “blue”, “green”];
}
function SubType{}(
   SuperType.call(this);     //继承了SuperType。通过调用SuperType的构造函数,借用其构造结构
}
var instance1 = new SubType();
instance1.colors.push(“black”);
alert(intance1.colors);     //red,blue,green,black
var instance2 = new SubType();
alert(instance2.colors);   //red,blue,green
Copy after login

Use this method to pass parameters to the supertype constructor in the subclass constructor, as follows:

function SuperType(name){
    this.name = name;
}
function SubType(){
SuperType.call(this,“Nicholas”);        //传入参数,利用这个参数初始化父类构造函数中的name
this.age = 29;
}
var instance = new SubType();
alert(instance.name);   //Nicholas
alert(instance.age);   //29
Copy after login

Problem: Inconvenient to reuse

3. Combined inheritance: Use the prototype chain to inherit the prototype properties and methods, and borrow the constructor to implement the instance Inheritance of attributes

Sample code:

function SuperType(name){
this.name = name;
this.colors = [“red”, “blue”,“green”];
}
SuperType.prototype.sayName = function(){   //定义了一个方法,该方法在继承的子类中也可以用
    alert(this.name);
}
function SubType(name, age){
SuperType.call(this, name);    //继承SuperType的一部分,this指SubType,
this.age = age;    //自己新定义的属性age也可以进行赋值
}
SubType.prototype = new SuperType();     //利用原型继承,可以使用父类的方法(见原型链继承)
SubType.prototype.sayAge = function(){   //定义SubType特有的新方法
    alert(this.age);
}
var instance1 = new SubType(“Martin”, 10);
instance1.colors.push(“black”);
alert(instance1.colors);  //red,blue,green,black
instance1.sayName();   //Martin
instance1.sayAge();  //10
var instance2 = new SubType(“Greg”, 27);
alert(instance2.colors);   //red,blue,green
instance2.sayName();  //Greg
instance2.sayAge();  //27
Copy after login

Related recommendations:

Detailed examples of inheritance methods in JS

Several ways to implement inheritance in JS

The above is the detailed content of JS inheritance method--case description. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template