跟我学习javascript创建对象(类)的8种方法

yizhihongxing

跟我学习JavaScript创建对象(类)的8种方法

本文将详细讲解JavaScript中创建对象或类的8种方法,包括对象字面量、构造函数、原型链、Object.create()、工厂模式、Class语法、继承与混合等内容。

1. 对象字面量

对象字面量是一种创建对象的简单方法,通过直接在花括号内定义对象的属性和方法,以冒号作为键名和键值的分隔符。例如:

let person = {
  firstName: 'John',
  lastName: 'Doe',
  age: 30,
  getFullName: function() {
    return this.firstName + ' ' + this.lastName;
  }
};

2. 构造函数

使用构造函数创建对象是一种非常常见的方式。构造函数可以使用new关键字来创建多个类似的对象,通过this指向新创建的对象,例如:

function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
  this.getFullName = function() {
    return this.firstName + ' ' + this.lastName;
  }
}

let person1 = new Person('John', 'Doe', 30);
let person2 = new Person('Jane', 'Doe', 25);

3. 原型链

JavaScript中的每一个对象都有一个原型,该对象可以继承原型中的属性和方法,而原型也可以继承其他对象。可以通过构造函数的prototype属性来给对象的原型添加属性和方法,例如:

function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
}

Person.prototype.getFullName = function() {
  return this.firstName + ' ' + this.lastName;
}

let person = new Person('John', 'Doe', 30);
console.log(person.getFullName());

4. Object.create()

Object.create()方法可用于创建一个新的对象,该对象的原型是指定的原型对象,例如:

let personProto = {
  getFullName: function() {
    return this.firstName + ' ' + this.lastName;
  }
};

let person = Object.create(personProto);
person.firstName = 'John';
person.lastName = 'Doe';
console.log(person.getFullName());

5. 工厂模式

工厂模式可以通过一个函数来创建多个对象,该函数返回一个带有属性和方法的新对象,例如:

function createPerson(firstName, lastName, age) {
  let person = {};
  person.firstName = firstName;
  person.lastName = lastName;
  person.age = age;
  person.getFullName = function() {
    return this.firstName + ' ' + this.lastName;
  }
  return person;
}

let person1 = createPerson('John', 'Doe', 30);
let person2 = createPerson('Jane', 'Doe', 25);

6. Class语法

ES6引入了Class语法,用于创建对象和类。Class语法的本质仍然是使用构造函数和原型链,但提供的语法更加优雅,例如:

class Person {
  constructor(firstName, lastName, age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }

  getFullName() {
    return this.firstName + ' ' + this.lastName;
  }
}

let person = new Person('John', 'Doe', 30);
console.log(person.getFullName());

7. 继承

继承是一种实现类之间的代码重用的方式。ES6提供了extends关键字,使得子类可以继承父类的属性和方法,例如:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name);
  }

  speak() {
    console.log(this.name + ' barks.');
  }
}

let dog = new Dog('Rex');
dog.speak(); // Rex barks.

8. 混合

混合是一种将多个对象或类合并为一个新类的方式。可以通过Object.assign()方法将多个对象合并在一起。例如:

const canEat = {
  eat: function() {
    return 'eating';
  }
};

const canWalk = {
  walk: function() {
    return 'walking';
  }
};

const canSwim = {
  swim: function() {
    return 'swimming';
  }
};

function Person(name) {
  this.name = name;
}

Object.assign(Person.prototype, canEat, canWalk);

const p = new Person('John');
console.log(p.walk()); // walking
console.log(p.eat()); // eating

这样,p对象就具有了canEat和canWalk对象的属性和方法。

以上就是本文讲解的JavaScript创建对象或类的8种方法,不同的方法适用于不同的场景,需要根据具体情况选择合适的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跟我学习javascript创建对象(类)的8种方法 - Python技术站

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

相关文章

  • js学习心得_一个简单的动画库封装tween.js

    我来详细讲解“js学习心得_一个简单的动画库封装tween.js”的完整攻略。 1. 什么是Tween.js Tween.js 是一个小巧、功能强大的 JavaScript 动画引擎库,封装了比较常见的动画算法,并且使用非常简单,方便开发者使用。Tween.js 可以用于所有支持 JavaScript 的平台。 2. 如何使用Tween.js 2.1 引入T…

    JavaScript 2023年6月10日
    00
  • JavaScript RegExp 对象用法详解

    JavaScript RegExp 对象用法详解 JavaScript 的正则表达式 (RegExp) 提供了一种强大的文本匹配能力,可以极大地简化对字符串的操作。在本篇文章中,我们将详细介绍 JavaScript RegExp 对象的用法,包括创建 RegExp 对象、访问 RegExp 对象属性、使用 RegExp 对象方法等。 创建 RegExp 对象…

    JavaScript 2023年6月10日
    00
  • JavaScript定义数组的三种方法(new Array(),new Array(‘x’,’y’)

    下面我来详细讲解JavaScript定义数组的三种方法。 一、使用数组字面量 使用数组字面量定义数组最简单,也是最常用的方法。语法如下: let arr = [item1, item2, …, itemN]; 其中,item1至itemN表示数组中的每个元素。这些元素可以是任意类型的,包括数字、字符串甚至还可以是其他数组。 示例: let arr = […

    JavaScript 2023年5月27日
    00
  • JavaScript之String常见的方法详解

    JavaScript之String常见的方法详解 概述 在JavaScript中,字符串是一个非常重要的数据类型。我们经常需要对字符串进行各种操作以满足业务需求。这篇文章将介绍JavaScript中字符串常见的方法,包括获取字符串长度、字符串连接、字符串截取、查找字符串位置等。 获取字符串长度 获取字符串的长度,可以通过字符串的length属性获取,它会返回…

    JavaScript 2023年5月27日
    00
  • JavaScript中的Array 对象(数组对象)

    JavaScript中的Array 对象 在JavaScript中,Array是一个用于存储一组元素的对象。可以通过[]或者Array构造函数来创建一个数组。 创建数组 通过字面量创建数组 const arr = [1, 2, 3]; 通过构造函数创建数组 const arr = new Array(1, 2, 3); 或者使用以下方式来创建空数组: con…

    JavaScript 2023年5月27日
    00
  • js实现调用网络摄像头及常见错误处理

    JS 实现调用网络摄像头及常见错误处理 调用摄像头 在网页中调用网络摄像头是一个常见的需求,在 web 中,我们可以使用 HTML5 中的 getUserMedia() 方法来获取摄像头的视频流,再利用 Canvas 技术实现对摄像头视频的处理。使用 getUserMedia() 方法时,需要用户授权方可使用摄像头。 // 判断浏览器是否支持 if (nav…

    JavaScript 2023年6月11日
    00
  • JavaScript Event Loop相关原理解析

    JavaScript Event Loop相关原理解析 什么是Event Loop Event Loop是JavaScript的一种异步编程模型,用于处理进程中的各种事件。 JavaScript在单线程执行的情况下,对于涉及到阻塞I/O,耗时计算等操作时,若采取同步的方式处理,会导致线程的阻塞并降低程序的响应时间和执行效率,因此JavaScript采用异步的…

    JavaScript 2023年5月28日
    00
  • JavaScript 五大常见函数

    JavaScript 五大常见函数 在 JavaScript 编程中,有五大常见函数,它们分别是:parseInt()、parseFloat()、isNaN()、toFixed() 和 toString()。下面我们将结合代码示例来详细讲解这五大常见函数。 parseInt() parseInt() 方法将一个字符串进行解析,返回整数值。 // 示例1 le…

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