Home  >  Article  >  Web Front-end  >  Summary of inheritance methods in JS (with case)

Summary of inheritance methods in JS (with case)

php中世界最好的语言
php中世界最好的语言Original
2018-06-04 17:22:251632browse
Prototype chain inheritance

Core: Use the instance of the parent class as the prototype of the subclass
Features:
1: Very pure inheritance relationship, the instance is a subclass An instance of is also an instance of the parent class
2: The parent class adds a new prototype method, which can be accessed by the subclasses
Disadvantages:
1: If you want to add new attributes and methods to the subclass, you must After new Animal(), multiple inheritance cannot be achieved
2: When creating a subclass instance, parameters cannot be passed to the parent class constructor

function Animal(name){
    this.name=name;
    this.sleep=function(){
        console.log(this.name+"正在睡觉");
    }
}
Animal.prototype.eat=function() {
    console.log(this.name + "正在吃");
}
function Cat(){
}
Cat.prototype=new Animal();
Cat.prototype.name="猫";
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep());
console.log(cat.eat());
console.log(cat instanceof Cat);//true
console.log(cat instanceof Animal);//true

Construction inheritance
Core: Use The constructor of the parent class enhances the instance of the subclass, which is equivalent to copying the instance attributes of the parent class to the subclass (no prototype is used)
Features:
1: When creating a subclass instance, you can pass parameters to the parent class
2: Multiple inheritance can be achieved
Disadvantages:
1: The instance is not an instance of the parent class, but an instance of the subclass
2: Only the properties and methods of the parent class can be inherited, but the prototype properties cannot be inherited. And method
3: Function reuse cannot be achieved. Each subclass has a copy of the parent class instance function, which affects performance

    function Animal(name){
            this.name=name;
            this.sleep=function(){
                console.log(this.name+"正在睡觉");
            }
        }
        Animal.prototype.eat=function() {
            console.log(this.name + "正在吃");
        }
                function Cat(name){
                Animal.call(this);
                this.name=name;
        }
        var cat=new Cat("猫");
        console.log(cat.name);
        console.log(cat.sleep());
//        console.log(cat.eat());不能继承原型化方法
        console.log(cat instanceof Cat);//true
        console.log(cat instanceof Animal);//false

Instance inheritance

function Animal(name){
    this.name=name;
    this.sleep=function(){
        console.log(this.name+"正在睡觉");
    }
}
Animal.prototype.eat=function() {
    console.log(this.name + "正在吃");
}
function Cat(name){
    var instance=new Animal();
    instance.name=name;
    return instance;
}
var cat=new Cat("猫");
console.log(cat.name);
console.log(cat.sleep());
console.log(cat.eat());
console.log(cat instanceof Cat);//false
console.log(cat instanceof Animal);//true

Features:
There is no restriction on the calling method, whether it is new subclass () or subclass (), the returned object has the same effect
Disadvantages:
The instance is an instance of the parent class, not a subclass Example
Does not support multiple inheritance
Combined inheritance

function Animal(name){
    this.name=name;
    this.sleep=function(){
        console.log(this.name+"正在睡觉");
    }
}
Animal.prototype.eat=function() {
    console.log(this.name + "正在吃");
}
function Cat(name){
    Animal.call(this);
    this.name=name;
    }
Cat.prototype=new Animal();
var cat=new Cat("猫");
console.log(cat.name);
console.log(cat.sleep());
console.log(cat.eat());
console.log(cat instanceof Cat);//true
console.log(cat instanceof Animal);//true

Others:
1: Form verification
post is submitted safely and will not expose information
get will expose information
2: Browser object
3: navigator contains information about the browser navigator.appName returns the browser name
4: The attributes of the encapsulated class can be customized, and the name is customized

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

How to bind the direction keys to control div movement

How to make the effect of switching fonts by clicking on the title text

The above is the detailed content of Summary of inheritance methods in JS (with case). For more information, please follow other related articles on the PHP Chinese website!

Statement:
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