- class概念:
在面向对象的编程中,class 是用于创建对象的可扩展的程序代码模版,它为对象提供了状态(成员变量)的初始值和行为(成员函数或方法)的实现。
使用场景:
在日常开发中,我们经常需要创建许多相同类型的对象,例如用户(users)、商品(goods)或者任何其他东西。
正如关键字new可以帮助我们实现这种需求。
但在现代 JavaScript 中,还有一个更高级的“类(class)”构造方式,它引入许多非常棒的新功能,这些功能对于面向对象编程很有用。
基本语法:
class MyClass {
// class 方法
constructor() { ... }
method1() { ... }
method2() { ... }
method3() { ... }
...
}然后我们使用new MyClass()来创建拥有上述方法的对象,new 会自动调用 constructor() 方法,因此我们可以在 constructor() 中初始化对象。
class User {
constructor(name) {
this.name = name;
}
sayHi() {
alert(this.name);
}
}
// 用法:
let user = new User("John");
user.sayHi();那么到底什么是class呢?
在JavaScript中类是一个函数:
class User {
constructor(name) { this.name = name; }
sayHi() { alert(this.name); }
}
// 佐证:User 是一个函数
alert(typeof User); // functionclass User{...}实际上做了如下的事情,
- 创建一个名为
User的函数,该函数成为类声明的结果。该函数的代码来自于constructor方法(如果我们不编写这种方法,那么它就被假定为空)。 - 存储类中的方法,例如
User.prototype中的sayHi。
当 new User 对象被创建后,当我们调用其方法时,它会从原型中获取对应的方法因此,对象 new User 可以访问类中的方法。 以下代码可以很好的解释上述流程:
class User {
constructor(name) { this.name = name; }
sayHi() { alert(this.name); }
}
// class 是一个函数
alert(typeof User); // function
// ...或者,更确切地说,是 constructor 方法
alert(User === User.prototype.constructor); // true
// 方法在 User.prototype 中,例如:
alert(User.prototype.sayHi); // sayHi 方法的代码
// 在原型中实际上有两个方法
alert(Object.getOwnPropertyNames(User.prototype)); // constructor, sayHi主要作用:我们可以通过class的extends来实现继承。
版权声明:本文为m0_63153901原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。