Home > Article > Web Front-end > Summary of inheritance methods in JS (with case)
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!