Home Web Front-end JS Tutorial Detailed explanation of the use of the constructor of the inheritance mechanism based on JavaScript and the prototype chain hybrid method_javascript skills

Detailed explanation of the use of the constructor of the inheritance mechanism based on JavaScript and the prototype chain hybrid method_javascript skills

May 16, 2016 pm 05:34 PM
Constructor

Defects of constructor and prototype implementation inheritance

First, let’s analyze the shortcomings of constructor and prototype chain inheritance methods:

The main problem with constructors (object impersonation) is that the constructor method must be used, and methods defined through prototypes cannot be inherited. This is not the best choice. However, if you use the prototype chain, you cannot use the parameterized constructor. How do developers choose? The answer is simple, use both.

Constructor Prototype Mixing Method

This inheritance method uses constructors to define classes instead of using any prototypes. The best way to create a class is to use constructors to define properties and prototypes to define methods. This method also applies to the inheritance mechanism, using objects to pretend to inherit the properties of the constructor, and using the prototype chain to inherit the methods of the prototype object. Rewrite the previous example using these two methods, the code is as follows:

Copy the code The code is as follows:

function ClassA(sColor) {
this.color = sColor;
}

ClassA.prototype.sayColor = function () {
alert(this.color);
};

function ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;
}

ClassB.prototype = new ClassA();

ClassB.prototype.sayName = function () {
alert(this.name);
};


In this example, the inheritance mechanism is highlighted by two lines Code blue implementation. In the first highlighted line of code, in the ClassB constructor, an object is used to pretend to inherit the sColor property of the ClassA class. In the second highlighted line of code, methods of the ClassA class are inherited using the prototype chain. Because this hybrid approach uses the prototype chain, the instanceof operator still works correctly.

The following example tests this code:
Copy the code The code is as follows:

var objA = new ClassA("blue");
var objB = new ClassB("red", "John");
objA.sayColor(); //Output "blue"
objB.sayColor(); //Output "red"
objB.sayName(); //Output "John"

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)

Constructor in Python Constructor in Python Sep 02, 2023 pm 04:29 PM

In Python, every class has a constructor, which is a special method specified inside the class. The constructor/initializer will be called automatically when a new object is created for the class. When an object is initialized, the constructor assigns values ​​to data members in the class. There is no need to define the constructor explicitly. But in order to create a constructor, we need to follow the following rules - For a class, it is allowed to have only one constructor. The constructor name must be __init__. Constructors must be defined using instance properties (just specify the self keyword as the first argument). It cannot return any value except None. Syntax classA():def__init__(self):pass Example Consider the following example and

C++ syntax error: The same constructor signature appears multiple times, how to solve it? C++ syntax error: The same constructor signature appears multiple times, how to solve it? Aug 22, 2023 pm 04:49 PM

C++ is a powerful programming language, but it is inevitable to encounter various problems during use. Among them, the same constructor signature appearing multiple times is a common syntax error. This article explains the causes and solutions to this error. 1. Cause of the error In C++, the constructor is used to initialize the data members of the object when creating the object. However, if the same constructor signature is defined in the same class (that is, the parameter types and order are the same), the compiler cannot determine which constructor to call, causing a compilation error. For example,

C++ syntax error: The constructor defined outside the class must be added with the class name as a qualifier. How should it be corrected? C++ syntax error: The constructor defined outside the class must be added with the class name as a qualifier. How should it be corrected? Aug 22, 2023 pm 02:00 PM

C++ is a widely used object-oriented programming language. When defining the constructor of a class in C++, if you want to place the definition of the constructor outside the class, you need to add the class name as a qualifier to the definition of the constructor. To specify which class this constructor belongs to. This is a basic rule of C++ syntax. If this rule is not followed when defining the constructor of a class, a compilation error will appear, prompting "Constructors defined outside the class must be qualified with the class name." So, if you encounter this kind of compilation error, you should

Does go language have constructors? Does go language have constructors? Jan 10, 2023 pm 02:15 PM

Go language does not have constructors. Go language, as a structured language, does not have constructors in object-oriented languages. However, similar effects of constructors in object-oriented languages ​​can be achieved in some ways, that is, using the process of structure initialization to simulate the implementation of constructors.

What is a constructor? Detailed explanation of constructors in JavaScript What is a constructor? Detailed explanation of constructors in JavaScript Aug 04, 2022 pm 03:22 PM

As the basis of prototypes and prototype chains, first understanding the constructor and its execution process can better help us learn the knowledge of prototypes and prototype chains. This article will take you to learn more about the constructor in JavaScript and introduce how to use the constructor to create a js object. I hope it will be helpful to you!

C++ error: The constructor must be declared in the public area, how to deal with it? C++ error: The constructor must be declared in the public area, how to deal with it? Aug 21, 2023 pm 08:26 PM

In C++ programming, the constructor is an important function used to initialize the member variables of a class. It is automatically called when an object is created to ensure proper initialization of the object. The constructor must be declared in the class, but sometimes you will encounter the error message "The constructor must be declared in the public area." This error is usually caused by incorrect access modifiers on the constructor. In C++, class member variables and member functions have an access modifier, including public, private, and protected.

C++ syntax error: A constructor with only a single parameter must be declared explicit. How to solve it? C++ syntax error: A constructor with only a single parameter must be declared explicit. How to solve it? Aug 22, 2023 am 09:01 AM

In C++ programming, you may encounter the following error message: Constructors with only a single parameter must be declared explicit. This error message may confuse beginners. Next, let's take a look at what explicit is in C++, the reasons why this error message appears, and how to solve this problem. The role of explicit in C++, if we define a constructor that only receives one parameter, then we need to use the keyword explici

Let's talk about how to use the Object() function to create objects in JavaScript Let's talk about how to use the Object() function to create objects in JavaScript Aug 04, 2022 pm 04:32 PM

How to create objects using the Object() function? The following article will introduce you to the method of creating objects using the Object() constructor (with three other methods of creating objects). I hope it will be helpful to you!

See all articles