美文网首页
ES6中 class 类的使用(学习笔记)

ES6中 class 类的使用(学习笔记)

作者: kevision | 来源:发表于2024-07-08 21:56 被阅读0次

介绍


类是用于创建对象的模板。
我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。
每个类中包含了一个特殊的方法 constructor(),它是类的构造函数,这种方法用于创建和初始化一个由 class 创建的对象。

创建类


class Runoob {
  constructor(name, url) {
    this.name = name;
    this.url = url;
  }
}

使用类


定义好类后,我们就可以使用 new 关键字来创建对象:

class Runoob {
  constructor(name, url) {
    this.name = name;
    this.url = url;
  }
}
 
let site = new Runoob("菜鸟教程",  "https://www.runoob.com");

创建对象时会自动调用构造函数方法 constructor()。

类的方法


我们使用关键字 class 创建一个类,可以添加一个 constructor()方法,然后添加任意数量的方法。

class ClassName {
  constructor() { ... }
  method_1() { ... }
  method_2() { ... }
  method_3() { ... }
}

类的继承


JavaScript 类继承使用 extends 关键字。
继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
super()方法用于调用父类的构造函数。
当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类(父类),新建的类称为派生类(子类)

class Site {
  constructor(name) {
    this.sitename = name;
  }
  present() {
    return '我喜欢' + this.sitename;
  }
}
 
class Runoob extends Site {
  constructor(name, age) {
    super(name); // 调用父类的构造函数,并把参数传过去
    this.age = age;
  }
  show() {
    // 继承了父类中的方法
    return this.present() + ', 它创建了 ' + this.age + ' 年。';
  }
}
 
let noob = new Runoob("菜鸟教程", 5);
document.getElementById("demo").innerHTML = noob.show(); // 我喜欢菜鸟教程, 它创建了 5 年

类的静态方法


静态方法是使用 static关键字修饰的方法,又叫类方法,属于类的,但不属于对象,在实例化对象之前可以通过 类名.方法名 调用静态方法。
静态方法不能在对象上调用,只能在类中调用。

class Runoob {
  constructor(name) {
    this.name = name;
  }
  static hello() {
    return "Hello!!";
  }
}
 
let noob = new Runoob("菜鸟教程");
 
// 可以在类中调用 'hello()' 方法
document.getElementById("demo").innerHTML = Runoob.hello();
 
// 不能通过实例化后的对象调用静态方法
// document.getElementById("demo").innerHTML = noob.hello();
// 以上代码会报错

Class 和模块化的结合应用


  1. 使用 Class 和模块化实现一个简单的计算器:
// calculator.js
export class Calculator {
  add(a, b) {
    return a + b;
  }
  
  subtract(a, b) {
    return a - b;
  }
}

// main.js
import { Calculator } from './calculator.js';

const calculator = new Calculator();
console.log(calculator.add(1, 2)); // 输出:3
console.log(calculator.subtract(3, 2)); // 输出:1
  1. 使用 Class 和模块化实现一个简单的购物车:
// product.js
export class Product {
  constructor(name, price) {
    this.name = name;
    this.price = price;
  }
}

// cart.js
export class Cart {
  constructor() {
    this.products = [];
  }
  
  addProduct(product) {
    this.products.push(product);
  }
  
  getTotalPrice() {
    return this.products.reduce((total, product) => total + product.price, 0);
  }
}

// main.js
import { Product } from './product.js';
import { Cart } from './cart.js';

const cart = new Cart();
const product1 = new Product("Apple", 1);
const product2 = new Product("Banana", 2);

cart.addProduct(product1);
cart.addProduct(product2);

console.log(cart.getTotalPrice()); // 输出:3

在上面的示例中,我们定义了一个 Product 的 Class 和一个 Cart 的 Class,并导出它们。在另一个文件中,我们通过导入 Product 和 Cart,并创建它们的实例,来实现一个简单的购物车功能。

参考文章:菜鸟教程, 优雅而高效的JavaScript—— Class 和模块化

相关文章

  • wepy脚手架工具

    学习目标 使用wepy框架开发小程序 = 了解ES6中的class类 . 轮播图组件的使用 使用flex布局...

  • 深入理解JS面向对象 - JavaScript实现继承的五种方式

    一、类与实例 1. 类的声明 传统function类的声明 ES6中的class声明 1.1 ES6 class与...

  • ES6中类与类的继承

    ES6以前,javascript中类的继承可以使用function和原型prototype来模拟类class来实现...

  • 深入理解ES6中class的this指向

    在ES6中,引入了类似其他语言的类的写法:即class(类),作为类对象模板。ES6 的class可以看作一个语法...

  • 【学习笔记】ES6 class类的使用笔记

    class类 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。function即使对象,对象既...

  • ES6 class类

    在ES6以前,没有类的概念,所有的面向对象都是基于原型实现的。ES6中可以通过class定义类,但是class的本...

  • ES6 class与继承

    class是什么 class是定义类的方法。ES6之前用构造函数的方式定义类,ES6引入了class。 class...

  • kotlin 密封类sealed class

    sealed class密封类学习笔记###

  • 面向对象

    javascript在ES6之前是没有办法定义一个类的,使用构造函数模拟类的概念 ,class ES6已经有类 ...

  • [JavaScript] class

    ES6中的class基于原型继承创建类。 (1)class只是原型继承的语法糖 相当于: 注: class定义中...

网友评论

      本文标题:ES6中 class 类的使用(学习笔记)

      本文链接:https://www.haomeiwen.com/subject/tyjacjtx.html