Detailed explanation of class keyword in ES6
class is one of the most important features introduced by es6. Before there was a class, we could only simulate classes through the prototype chain. This article mainly introduces the class keyword in ES6. Class is one of the most important features introduced by es6. This article gives you a detailed explanation through example code. Friends who need it can refer to it. I hope it can help everyone.
1. Introduction
//定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } }
In addition to the construction method, the Point class also defines a toString method. Note that when defining a "class" method, you do not need to add the keyword function in front, just put the function definition directly. In addition, there is no need to separate the methods with commas, otherwise an error will be reported.
//类的数据类型就是函数,类本身就指向构造函数。用的时候,也是直接对类使用new命令,跟构造函数的用法完全一致。 class Bar { doStuff() { console.log('stuff'); } } var b = new Bar(); b.doStuff() // "stuff"
2. Strict mode
Inside classes and modules, the default is strict mode, so there is no need to use use strict to specify the running mode. As long as your code is written in a class or module, only strict mode is available
3. Constructor method
The constructor method is the default method of the class. When an object instance is generated through the new command, it is automatically Call this method. A class must have a constructor method. If not explicitly defined, an empty constructor method will be added by default.
class Point { } // 等同于 class Point { constructor() {}//constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。 } //注意:类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。
4. Instance object of class
To generate an instance object of a class, use the new command.
Unless the attributes of an instance are explicitly defined on itself (i.e., defined on this object), they are defined on the prototype (i.e., defined on the class).
class Point { // ... } // 报错 var point = Point(2, 3); // 正确 var point = new Point(2, 3);
5. Class expression
The following code uses an expression to define a class. It should be noted that the name of this class is MyClass instead of Me. Me is only available in the internal code of Class and refers to the current class.
const MyClass = class Me { getClassName() { return Me.name; } }; //采用 Class 表达式,可以写出立即执行的 Class。 var person = new class { constructor(name) { this.name = name; } sayName() { console.log(this.name); } }('张三'); person.sayName(); // "张三"
6. There is no variable hoisting
There is no variable hoisting (hoist) in the class
In the following code, the Foo class is used first and defined later. This will cause an error. , because ES6 does not promote class declarations to the head of the code. The reason for this provision is related to inheritance mentioned below. It is necessary to ensure that the subclass is defined after the parent class.
new Foo(); // ReferenceError class Foo {}
7. Private methods
Private methods are a common requirement, but ES6 does not provide them and can only be simulated through workarounds.
Add private methods
① Make a difference in naming.
② Take advantage of the uniqueness of the Symbol value and name the private method as a Symbol value.
/*命名上加以区别*/ class Widget { // 公有方法 foo (baz) { this._bar(baz); } // 私有方法 _bar(baz) { return this.snaf = baz; } // ... } /*利用Symbol*/ const bar = Symbol('bar'); const snaf = Symbol('snaf'); export default class myClass{ // 公有方法 foo(baz) { this[bar](baz); } // 私有方法 [bar](baz) { return this[snaf] = baz; } // ... };
8. Private properties
Like private methods, ES6 does not support private properties. Currently, there is a proposal to add private attributes to classes. The method is to use # before the attribute name.
class Point { #x; constructor(x = 0) { #x = +x; // 写成 this.#x 亦可 } get x() { return #x } set x(value) { #x = +value } }
9. This points to
If a class method contains this, it points to an instance of the class by default.
Once this method is used alone, an error is likely to be reported.
class Logger { printName(name = 'there') { this.print(`Hello ${name}`); } print(text) { console.log(text); } } const logger = new Logger(); const { printName } = logger; printName(); //上面代码中,printName方法中的this,默认指向Logger类的实例。但是,如果将这个方法提取出来单独使用,this会指向该方法运行时所在的环境,因为找不到print方法而导致报错。 /*解决方法是,在构造方法中绑定this,这样就不会找不到print方法了。*/ class Logger { constructor() { this.printName = this.printName.bind(this); } // ... }
10. name attribute
Since in essence, the ES6 class is just a wrapper for the ES5 constructor, so many features of the function are inherited by Class, including the name attribute. .
The name attribute always returns the class name immediately following the class keyword.
class Point {} Point.name // "Point"
Related recommendations:
Detailed explanation of super keyword in ES6 Class
Get and get of class class in ES6 javascript Set usage example
How to use the class attribute in JS
The above is the detailed content of Detailed explanation of class keyword in ES6. For more information, please follow other related articles on the PHP Chinese website!

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



Windows operating system is one of the most popular operating systems in the world, and its new version Win11 has attracted much attention. In the Win11 system, obtaining administrator rights is an important operation. Administrator rights allow users to perform more operations and settings on the system. This article will introduce in detail how to obtain administrator permissions in Win11 system and how to effectively manage permissions. In the Win11 system, administrator rights are divided into two types: local administrator and domain administrator. A local administrator has full administrative rights to the local computer

Detailed explanation of the mode function in C++ In statistics, the mode refers to the value that appears most frequently in a set of data. In C++ language, we can find the mode in any set of data by writing a mode function. The mode function can be implemented in many different ways, two of the commonly used methods will be introduced in detail below. The first method is to use a hash table to count the number of occurrences of each number. First, we need to define a hash table with each number as the key and the number of occurrences as the value. Then, for a given data set, we run

Detailed explanation of division operation in OracleSQL In OracleSQL, division operation is a common and important mathematical operation, used to calculate the result of dividing two numbers. Division is often used in database queries, so understanding the division operation and its usage in OracleSQL is one of the essential skills for database developers. This article will discuss the relevant knowledge of division operations in OracleSQL in detail and provide specific code examples for readers' reference. 1. Division operation in OracleSQL

Detailed explanation of the remainder function in C++ In C++, the remainder operator (%) is used to calculate the remainder of the division of two numbers. It is a binary operator whose operands can be any integer type (including char, short, int, long, etc.) or a floating-point number type (such as float, double). The remainder operator returns a result with the same sign as the dividend. For example, for the remainder operation of integers, we can use the following code to implement: inta=10;intb=3;

The modulo operator (%) in PHP is used to obtain the remainder of the division of two numbers. In this article, we will discuss the role and usage of the modulo operator in detail, and provide specific code examples to help readers better understand. 1. The role of the modulo operator In mathematics, when we divide an integer by another integer, we get a quotient and a remainder. For example, when we divide 10 by 3, the quotient is 3 and the remainder is 1. The modulo operator is used to obtain this remainder. 2. Usage of the modulo operator In PHP, use the % symbol to represent the modulus

Detailed explanation of Linux system call system() function System call is a very important part of the Linux operating system. It provides a way to interact with the system kernel. Among them, the system() function is one of the commonly used system call functions. This article will introduce the use of the system() function in detail and provide corresponding code examples. Basic Concepts of System Calls System calls are a way for user programs to interact with the operating system kernel. User programs request the operating system by calling system call functions

jQuery is a classic JavaScript library that is widely used in web development. It simplifies operations such as handling events, manipulating DOM elements, and performing animations on web pages. When using jQuery, you often encounter situations where you need to replace the class name of an element. This article will introduce some practical methods and specific code examples. 1. Use the removeClass() and addClass() methods jQuery provides the removeClass() method for deletion

In-depth analysis of the role and usage of the static keyword in C language. In C language, static is a very important keyword, which can be used in the definition of functions, variables and data types. Using the static keyword can change the link attributes, scope and life cycle of the object. Let’s analyze the role and usage of the static keyword in C language in detail. Static variables and functions: Variables defined using the static keyword inside a function are called static variables, which have a global life cycle
