JS定义类的六种方式详解

JS定义类的六种方式详解

JavaScript 是一门面向对象的编程语言,定义类是面向对象编程中非常重要的部分。在JavaScript中,定义类的方式有六种。

方式一:函数定义类

使用函数定义类是最常见的方式之一。

function Person(name, age) {
  this.name = name;
  this.age = age;
}
Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
const person = new Person('John', 30);
person.greet();

该方法定义了一个名为 Person 的类,该类具有名称、年龄等基本属性,以及一个自定义方法 greet

通过使用 new 关键字创建一个名为 person 的具有给定初始化参数的新 Person 对象,并调用 greet 方法。

方式二:对象字面量定义类

使用对象字面定义类是另一种常见的方式。

const Person = {
  name: '',
  age: 0,
  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  },
  init(name, age) {
    this.name = name;
    this.age = age;
  },
};
const person = Object.create(Person);
person.init('John', 30);
person.greet();

这种方法使用对象字面量定义了一个类,名称为 Person,具有名称、年龄等基本属性, 以及两个自定义方法greetinit

使用 Object.create() 创建一个名为 person 的新对象,并执行初始化方法 init 以设置属性,并调用 greet方法。

方式三:工厂函数

使用工厂函数定义类是通过函数返回对象的方式创建的,与前面的函数定义方式略有不同。

function createPerson(name, age) {
  function greet() {
    console.log(`Hello, my name is ${name} and I am ${age} years old.`);
  }
  return {
    name,
    age,
    greet
  };
}
const person = createPerson('John', 30);
person.greet();

使用该方法定义了一个名为 createPerson 的函数,该函数返回一个拥有名称、年龄和 greet 方法的新对象。

创建一个名为 person 并传入初始化参数,该对象具有 greet 方法,并调用该方法。

方式四:类定义

从 ES6 开始,JavaScript 支持使用 class 关键字定义类,该方式更接近传统语言中的定义方式,如 Java 和 C#。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}
const person = new Person('John', 30);
person.greet();

使用该方式定义了一个名为 Person 的类,该类具有名称、年龄等基本属性,以及一个自定义方法 greet.

创建一个名为 person 的新 Person 对象,该对象已初始化并具有 greet 方法,并调用该方法。

方式五:继承类

继承是面向对象编程中非常重要的部分。从 ES6 开始,JavaScript 支持 extends 关键字,用以实现继承。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

class Employee extends Person {
  constructor(name, age, salary) {
    super(name, age);
    this.salary = salary;
  }
  getInfo() {
    console.log(`My name is ${this.name} and my salary is ${this.salary}.`);
  }
}

const employee = new Employee('Tom', 40, 5000);
employee.greet();
employee.getInfo();

该方法定义类 Employee,继承自 Person。同时新增了工资属性,并自定义了新的方法 getInfo

创建一个名为employee的新 Employee 对象,并拥有父类 Person 的初始化值和子类 Employee 的工资值。

方式六:单例模式

单例模式是保证只存在一个类实例对象的模式。 JavaScript 中,在创建对象方面,可以使用函数闭包加上对象字面量的方式,实现单例定义类。

const Singleton = (function(){
  let instance;
  function Singleton() {
    if (!instance) {
      instance = this;
    }
    return instance;
  }
  return Singleton;
}());

const s1 = new Singleton();
const s2 = new Singleton();
console.log(s1==s2);

该方法使用闭包和对象字面量结合的方式,创建了一个名为 Singleton 的类。使用第一个 Singleton 实例。

创建了两个名为 s1s2 的实例对象,两者相等,说明该方法实现了单例模式。

结论

以上就是 JavaScript 定义类的六种方式。学习并掌握这些方法,有助于你更好地理解面向对象编程,写出更加灵活的 JavaScript 代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS定义类的六种方式详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript克隆对象深度介绍

    JavaScript克隆对象深度介绍 在 JavaScript 中,进行对象的克隆操作是非常常见的需求,而对象克隆的深度也是我们需要考虑的一个问题。本篇攻略将会详细介绍 JavaScript 中对象克隆的深度问题。 什么是 JavaScript 对象克隆 JavaScript 中的对象克隆(Object Clone),即用一个新变量复制出一份与原变量内容完全…

    JavaScript 2023年5月27日
    00
  • js创建表单元素并使用submit进行提交

    下面是创建表单元素并使用submit进行提交的完整攻略,由以下三个步骤组成: 步骤一:创建表单元素 创建表单元素需要使用JavaScript。我们可以使用DOM API来创建表单元素。首先,我们需要创建一个 元素。可以使用document.createElement()方法来创建。 const form = document.createElement(‘f…

    JavaScript 2023年6月10日
    00
  • JS中Safari浏览器中的Date

    JS中的Date对象在不同的浏览器中表现可能有所不同,Safari浏览器中的Date对象也有其特点和注意事项。 Safari浏览器中的Date对象 获取当前时间 在Safari浏览器中,可以通过以下代码获取当前时间: var currentDate = new Date(); 根据时间戳创建Date对象 Safari浏览器中,可以使用以下代码根据时间戳创建D…

    JavaScript 2023年5月27日
    00
  • Springboot实现邮箱验证码注册与修改密码及登录功能详解流程

    Springboot实现邮箱验证码注册与修改密码及登录功能详解流程 1. 准备工作 1.1 导入依赖 在 pom.xml 文件中导入以下依赖: <!– Spring Boot –> <dependency> <groupId>org.springframework.boot</groupId> <ar…

    JavaScript 2023年6月11日
    00
  • Javascript之BOM(window对象)详解

    Javascript之BOM(window对象)详解 什么是BOM 在Web页面中,JavaScript可以调用浏览器提供的API,这些API就组成了BOM。BOM(浏览器对象模型)提供了一组对象,并且每个对象都有相关的属性和方法,可以操作浏览器窗口。BOM除了提供了访问浏览器接口的对象外,还提供了访问用户代理信息的导航对象。其中,window对象是BOM最…

    JavaScript 2023年6月11日
    00
  • javascript创建函数的20种方式汇总

    首先,我们需要明确“JavaScript创建函数的20种方式”是指通过不同的方法来创建JavaScript函数。下面将介绍其中的20种方式。 1.使用函数声明方式 函数声明方式就是使用function关键字来声明和定义函数。例如: function myFunction() { //函数体 } 2.使用函数表达式方式 函数表达式方式是使用函数字面量来创建函数…

    JavaScript 2023年5月27日
    00
  • Javascript json object 与string 相互转换的简单实现

    下面详细讲解一下”Javascript JSON Object与String相互转换的简单实现”的攻略。 什么是JSON? JSON全称为JavaScript Object Notation,是现在比较流行的一种轻量级的数据交换格式。它使用完全独立于编程语言的文本格式来表示数据。我们可以通过JavaScript中的JSON对象来解析JSON数据,并进行序列化…

    JavaScript 2023年5月27日
    00
  • 详解js常用分割取字符串的方法

    详解js常用分割取字符串的方法 在JavaScript中,我们常常需要对字符串进行分割取值的操作。以下是几种常用的字符串分割取值方法。 1. 通过split方法进行分割 split()方法可以将一个字符串分割成一个字符串数组,使用时需要传入一个分割符,该符号表示将字符串以该符号为分界点进行分割。 例如: const str = "apple,ban…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部