Home Web Front-end JS Tutorial What are the inheritance methods of js? Introduction to several ways to implement inheritance in js

What are the inheritance methods of js? Introduction to several ways to implement inheritance in js

Aug 11, 2018 pm 04:40 PM
javascript inherit

What this article brings to you is what are the inheritance methods of js? An introduction to several ways to implement inheritance in js has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

1. The way js implements inheritance: prototype chain

Implementation method: The instance of A prototype is the attribute of B prototype

No Forget that Object exists by default in the prototype chain

Adding methods to subclasses or overriding superclass methods must be placed after replacing the prototype statement

After inheritance is implemented through the prototype chain, object literals cannot be used Create methods and properties, because the prototype chain will be rewritten

After inheritance is implemented through the prototype chain, the reference type properties of the super class will be shared by all instances

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

function SuperType() {

  this.property = true;

  this.arr=[1,2,3]

}

SuperType.prototype.getSuperValue = function() {

  return this.property;

}

function SubType() {

  this.sub = false;

}

SubType.prototype = new SuperType();

//继承SuperType,即以superType的实例为中介,使subType。prototype指向superType的原型

SubType.prototype.getSubValue = function() { //添加新方法

  return this.sub;

}

SubType.prototype.getSuperValue = function() { // 重写超类中的方法

  return this.sub;

}

var instance1 = new SubType();

instance1.arr.push(4);

console.log(instance1.arr); //1,2,3,4

var instance2 = new SubType();

console.log(instance2.arr); //1,2,3,4

Copy after login

2. js implementation inheritance Method: Borrow the constructor

Implementation method: Call the superclass constructor within the constructor of the subclass, that is, use call() or apply(), so that the scope of the superclass constructor changes.

You can pass parameters to the constructor, but you cannot reuse functions

1

2

3

4

5

6

7

8

function SuperType(name,age){

  this.name = name;

  this.age = age;

}

function SubType() {

  SuperType.call(this,'i','21')//继承SuperType,并传递参数

  this.job = 'actor'

}

Copy after login

3. The way js implements inheritance: combined inheritance

Implementation method: Use the prototype chain to realize the inheritance of prototype properties and methods, and use the constructor to realize the inheritance of instance properties

Hidden danger: Call the parent class constructor twice (1call() method, 2new SuperType() )

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

function SuperType(name,age){

  this.name = name;

  this.age = age;

  this.f = [1,2,3,4]

}

SuperType.prototype.sayName = function() {

  console.log(this.name)

}

function SubType(name,age) {

  SuperType.call(this,name,age)//继承SuperType,并传递参数

  this.job = 'actor'

}

SubType.prototype=new SuperType();

SubType.prototype.constructor = SubType;

SubType.prototype.sayHello=function() {

  console.log('hello')

}

 

var h = new SubType('hua', 18);

h.sayName()//haha

h.f.push(5)

console.log(h.f)//1,2,3,4,5

var n = new SubType();

console.log(n.f)//1,2,3,4

Copy after login

4. The way js implements inheritance: prototypal inheritance

Based on an object, generate a new object, and then modify the new object

Attributes of super class reference types are still shared

1

2

3

4

5

6

7

8

9

var person = {

  name:'lily',

  age:'21',

  friends:[1,2,3]

}

var people = Object.create(person);

people.friends.push(4);

var human = Object.create(person);

console.log(human.friends)//1,2,3,4

Copy after login

5. The way js implements inheritance: parasitic inheritance

Creation A function only used to implement the inheritance process, extend the object inside the function, and then return the object

At this time, the reference type attribute of the parent class is still shared by all instances

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

function anotherFunction(original) {

  var clone  = Object(original);

  clone.sayHi = function() {

    console.log('hi')

  }

  return clone;

}

var person = {

  name:'lili',

  age:'21',

  f: [1,2,3]

}

var people1 = anotherFunction(person);

people1.f.push(4)

console.log(people1.f);// 1,2,3,4

var people2 = anotherFunction(person);

console.log(people2.f);// 1,2,3,4

Copy after login

6. The way js implements inheritance: parasitic combined inheritance

Inherits properties by borrowing constructors, and inherits methods through prototype chain mixing

Reduces one parent During the execution of the class constructor, the attributes of the parent class reference type are not shared

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

function SuperType(name,age){

  this.name = name;

  this.age = age;

  this.f = [1,2,3,4]

}

SuperType.prototype.sayName = function() {

  console.log(this.name)

}

function SubType(name,age) {

  SuperType.call(this,name,age)

  this.job = 'actor'

}

function inherit(superType,subType) {

  var property =  Object.create(superType.property);// 创建父类原型的一个副本,并没有调用父类构造函数

  property.constructor = subType;// 使父类原型副本的constructor属性指向子类

  subType.property = property;// 子类的原型指向父类原型副本

}

inherit(SuperType,SubType)

var instance = new SubType('haha', 18);

instance.sayName()//haha

instance.f.push(5);

console.log(instance.f);//1,2,3,4,5

var ins = new SubType();

console.log(ins.f);//1,2,3,4

Copy after login

Related recommendations:

JS Inheritance--Prototype Chain Inheritance and Class Inheritance_Basic Knowledge

Detailed explanation of examples of inheritance methods in JS

Several ways to implement inheritance in JS

The above is the detailed content of What are the inheritance methods of js? Introduction to several ways to implement inheritance in js. For more information, please follow other related articles on the PHP Chinese website!

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Detailed explanation of C++ function inheritance: How to use 'base class pointer' and 'derived class pointer' in inheritance? Detailed explanation of C++ function inheritance: How to use 'base class pointer' and 'derived class pointer' in inheritance? May 01, 2024 pm 10:27 PM

In function inheritance, use "base class pointer" and "derived class pointer" to understand the inheritance mechanism: when the base class pointer points to the derived class object, upward transformation is performed and only the base class members are accessed. When a derived class pointer points to a base class object, a downward cast is performed (unsafe) and must be used with caution.

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

Detailed explanation of C++ function inheritance: How to debug errors in inheritance? Detailed explanation of C++ function inheritance: How to debug errors in inheritance? May 02, 2024 am 09:54 AM

Inheritance error debugging tips: Ensure correct inheritance relationships. Use the debugger to step through the code and examine variable values. Make sure to use the virtual modifier correctly. Examine the inheritance diamond problem caused by hidden inheritance. Check for unimplemented pure virtual functions in abstract classes.

Detailed explanation of C++ function inheritance: How to understand the 'is-a' and 'has-a' relationship in inheritance? Detailed explanation of C++ function inheritance: How to understand the 'is-a' and 'has-a' relationship in inheritance? May 02, 2024 am 08:18 AM

Detailed explanation of C++ function inheritance: Master the relationship between "is-a" and "has-a" What is function inheritance? Function inheritance is a technique in C++ that associates methods defined in a derived class with methods defined in a base class. It allows derived classes to access and override methods of the base class, thereby extending the functionality of the base class. "is-a" and "has-a" relationships In function inheritance, the "is-a" relationship means that the derived class is a subtype of the base class, that is, the derived class "inherits" the characteristics and behavior of the base class. The "has-a" relationship means that the derived class contains a reference or pointer to the base class object, that is, the derived class "owns" the base class object. SyntaxThe following is the syntax for how to implement function inheritance: classDerivedClass:pu

How do inheritance and polymorphism affect class coupling in C++? How do inheritance and polymorphism affect class coupling in C++? Jun 05, 2024 pm 02:33 PM

Inheritance and polymorphism affect the coupling of classes: Inheritance increases coupling because the derived class depends on the base class. Polymorphism reduces coupling because objects can respond to messages in a consistent manner through virtual functions and base class pointers. Best practices include using inheritance sparingly, defining public interfaces, avoiding adding data members to base classes, and decoupling classes through dependency injection. A practical example showing how to use polymorphism and dependency injection to reduce coupling in a bank account application.

How to get HTTP status code in JavaScript the easy way How to get HTTP status code in JavaScript the easy way Jan 05, 2024 pm 01:37 PM

Introduction to the method of obtaining HTTP status code in JavaScript: In front-end development, we often need to deal with the interaction with the back-end interface, and HTTP status code is a very important part of it. Understanding and obtaining HTTP status codes helps us better handle the data returned by the interface. This article will introduce how to use JavaScript to obtain HTTP status codes and provide specific code examples. 1. What is HTTP status code? HTTP status code means that when the browser initiates a request to the server, the service

'Introduction to Object-Oriented Programming in PHP: From Concept to Practice' 'Introduction to Object-Oriented Programming in PHP: From Concept to Practice' Feb 25, 2024 pm 09:04 PM

What is object-oriented programming? Object-oriented programming (OOP) is a programming paradigm that abstracts real-world entities into classes and uses objects to represent these entities. Classes define the properties and behavior of objects, and objects instantiate classes. The main advantage of OOP is that it makes code easier to understand, maintain and reuse. Basic Concepts of OOP The main concepts of OOP include classes, objects, properties and methods. A class is the blueprint of an object, which defines its properties and behavior. An object is an instance of a class and has all the properties and behaviors of the class. Properties are characteristics of an object that can store data. Methods are functions of an object that can operate on the object's data. Advantages of OOP The main advantages of OOP include: Reusability: OOP can make the code more

Java Interfaces and Abstract Classes: The Road to Programming Heaven Java Interfaces and Abstract Classes: The Road to Programming Heaven Mar 04, 2024 am 09:13 AM

Interface: An implementationless contract interface defines a set of method signatures in Java but does not provide any concrete implementation. It acts as a contract that forces classes that implement the interface to implement its specified methods. The methods in the interface are abstract methods and have no method body. Code example: publicinterfaceAnimal{voideat();voidsleep();} Abstract class: Partially implemented blueprint An abstract class is a parent class that provides a partial implementation that can be inherited by its subclasses. Unlike interfaces, abstract classes can contain concrete implementations and abstract methods. Abstract methods are declared with the abstract keyword and must be overridden by subclasses. Code example: publicabstractcla

See all articles