Inheritance that JavaScript must learn every day_javascript skills
Hello friends, today we will continue to explain the encapsulation in this lecture. Today is the upgrade of the previous content, inheritance in OOP thinking. Let us first explain what inheritance means. Where will continue be used.
Inheritance means that descendants inherit a series of attributes and behaviors of their ancestors. Descendants are still of the same race as their ancestors. Let’s use some specific descriptions to understand what inheritance is
Chinese people and Americans are all inherited from human ancestors, so we have the same attribute behavior, but there are still certain differences. We will continue to talk about polymorphism later, so through the above example diagram, we It can be clearly understood that people are actually very similar to each other, so if we look at the example code below, we will know that by using code to simulate inheritance, we can also know a way to write as little code as possible to achieve as much as possible. thing.
//遗传继承函数 function Extend(Children,Parent){ //这里仅仅只是继承的原型链接定义的行为 for(var p in Parent.prototype){ Children[p] = Parent.prototype[p]; } } //人类祖先 function Human(){ this.weight = "50kg"; this.height = "180cm"; this.hair = "棕色"; } //吃饭 Human.prototype.Eat = function(){ console.log("吃饭"); } //说话 Human.prototype.Say = function(){ console.log("大家好我是地球人"); } //行走 Human.prototype.Walk = function(){ console.log("我是人类,天生就可以两条腿直立行走"); } //繁衍 Human.prototype.Multiply = function(){ console.log("跟老婆一起做羞羞的事,就是为了人类的繁荣"); } //中国人 function Chinese(){ //调用继承函数 Extend(this,Human); } //美国人 function American(){ //调用继承函数 Extend(this,Human); }
We just write it like this and simulate inheritance in high-level languages. Let’s see if there are any problems after running it
After running, we found the problem. By writing this way, we can already realize the inheritance of prototype link, and it also saves a lot of code. When we write the Chinese and American functions, do we only write a small amount of code? , we have inherited the behavior of the parent class, and the instance can also call the behavior function owned by the parent class. However, by writing this way, we have not fully realized inheritance, because it has no effect at all when we call the hair attribute. , then, if we modify the code again, we can achieve complete inheritance
//遗传继承函数 function Extend(Children,Parent){ //现在我们是从父类实例来继承,所以属性和方法都会被继承的 for(var p in Parent){ if(typeof Children[p] == "undefined"){ Children[p] = Parent[p]; } } } //人类祖先 function Human(){ this.weight = "50kg"; this.height = "180cm"; this.hair = "棕色"; } //吃饭 Human.prototype.Eat = function(){ console.log("吃饭"); } //说话 Human.prototype.Say = function(){ console.log("大家好我是地球人"); } //行走 Human.prototype.Walk = function(){ console.log("我是人类,天生就可以两条腿直立行走"); } //繁衍 Human.prototype.Multiply = function(){ console.log("跟老婆一起做羞羞的事,就是为了人类的繁荣"); } //中国人 function Chinese(){ //调用继承函数 Extend(this,new Human()); } //美国人 function American(){ //调用继承函数 Extend(this,new Human()); }
We still have to see if the running effect is the same as we imagined?
It is not difficult to see from the above code that the current inheritance function is actually the attributes and behaviors copied from the specific instance of the Human class. In this way, we can further simulate the inheritance of the class. There is a sentence above, I still need to explain it to you
if(typeof Children[p] == "undefined"){ ...... }
The typeof keyword that appears here is actually an operator, which is used to check the type of a certain variable. If it is undefined, the result of the operation is "undefined", so this is how I compare. If the subclass does not If such an attribute or behavior function has been defined, it will be inherited from the parent class (note: the explanation here is to pave the way for polymorphism later).
Next let’s take a look at whether multiple inheritance is possible. We have already mentioned that both the Chinese and American classes inherit from the Human class. Now let’s write another class to inherit from Chinese
//四川人 function SiChuanMan(){ Extend(this,new Chinese()); }
Now we have written a very robust inheritance code, and it is very simple to understand. As long as we call the inheritance function in the constructor when declaring a new class, we can achieve complete inheritance of attributes and behavior functions. This way , we can save a lot of code, and the advantages of OOP thinking are once again reflected. If we want to simulate people in each province in China, if I write each province according to the Human class, from the sun I couldn't finish writing until the sun went down the next day. There are many ways to write inheritance, and everyone has their own way of writing it. Here, I will explain it to you in the simplest way. When you become proficient in using it later, you can also write it in the way you like, javascript It is a very flexible language in itself.
To summarize, today we have further upgraded the basis of encapsulation, so that we have achieved object inheritance, and the amount of written code has been further compressed. Think about it, it can improve the efficiency of work and the elegance of the code. , are you a little excited? As long as you follow my footsteps, we can understand the most complicated things in the simplest way. In fact, the program is not complicated. The reason for the complexity is that everyone has not been led correctly. It was originally very simple. A simple thing is understood and interpreted into different things by different people, which makes it complicated to learn. What's more, there are no continuous tutorials to lead everyone in the right direction step by step, so it is difficult for a long time. get promoted.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

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.

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

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

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.

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

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

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
