es6 class is a function. In es6, class (class) was introduced as a template for objects. Classes can be defined through the class keyword. The syntax is "class class name {...}; the essence of class is function (function), which is a syntactic sugar. The bottom layer is created through the "constructor".
The operating environment of this tutorial: windows7 system, ECMAScript version 6, Dell G3 computer.
es6 class is a function.
In ES6, class (class) is introduced as a template for objects, and classes can be defined through the class keyword.
## The essence of #class is function.
It can be regarded as a syntax sugar, and its bottom layer is created throughconstructor, making the object prototype written more clearly and more like The syntax of object-oriented programming.
function Person(name, age) { this.name = name; this.age = age; } Person.prototype.sayName = function() { return this.name; } const xiaoming = new Person('小明', 18); console.log(xiaoming);
class, which is the following
class Person { constructor(name, age) { this.name = name; this.age = age; } sayName() { return this.name; } } const xiaoming = new Person('小明', 18) console.log(xiaoming); // { name: '小明', age: 18 } console.log((typeof Person)); // function console.log(Person === Person.prototype.constructor); // true
When defining a class, there is no need to add function in front, and there is no need to separate the methods with commas. If you add it, an error will be reported.All methods of a class are defined on the prototype attribute of the class.
class A { constructor() {} toString() {} toValue() {} } // 等同于 function A () { // constructor }; A.prototype.toString = function() {}; A.prototype.toValue = function() {};
let a = new A(); a.constructor === A.prototype.constructor // true
Instance of class
Unless the attributes of the instance are explicitly defined on itself (i.e., defined on this object), they are defined on the prototype (i.e., defined on the class) .Note:1. There is no variable promotion for classnew A(); // ReferenceError class A {}
{ let A = class {}; class B extends A {} }
Inheritance
Class can pass the extends keyword Implement inheritanceclass Animal {} class Cat extends Animal { };
class Cat extends Animal { constructor(name, age, color) { // 调用父类的constructor(name, age) super(name, age); this.color = color; } toString() { return this.color + ' ' + super.toString(); // 调用父类的toString() } }
class Animal { /* ... */ } class Cat extends Animal { constructor() { } } let cp = new Cat(); // ReferenceError
class Cat extends Animal { } // 等同于 class Cat extends Animal { constructor(...args) { super(...args); } }
class A { constructor(x, y) { this.x = x; this.y = y; } } class B extends A { constructor(x, y, name) { this.name = name; // ReferenceError super(x, y); this.name = name; // 正确 } }
class A { static hello() { console.log('hello world'); } } class B extends A { } B.hello() // hello world
javascript video tutorial, web front-end】
The above is the detailed content of Is es6 class a function?. For more information, please follow other related articles on the PHP Chinese website!