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

跟我学习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日

相关文章

  • ASP动态生成的javascript表单验证代码

    下面是ASP动态生成的javascript表单验证代码的完整攻略。 什么是ASP动态生成的javascript表单验证代码? ASP动态生成的javascript表单验证代码是在ASP程序中使用javascript代码来验证用户提交的表单数据,它可以确保用户提交的数据格式符合要求,从而排除了很多不合规的数据,提高了网站的安全性和稳定性。 如何实现ASP动态生…

    JavaScript 2023年6月10日
    00
  • javascript高级程序设计(第三版)学习笔记(一) 正则表达式整理

    首先,需要解释一下该学习笔记的主题——正则表达式。 正则表达式 正则表达式,又称为“正则式”、“规则表达式”、“正规表达式”,是一种针对某种模式(字符串)进行匹配的工具。它通常被应用于字符串搜索、替换和拆分等场景。 正则表达式语法 正则表达式有自己独特的语法和规则,以下是一些常见的语法以及它们的意义: /pattern/:表示一个正则表达式模式,将被用于字符…

    JavaScript 2023年5月28日
    00
  • JavaScript动态创建form表单并提交的实现方法

    这里是关于JavaScript动态创建和提交表单的完整攻略。 1. 动态创建表单 在JavaScript中,动态创建表单包括以下三个步骤: 1.1 创建form元素 使用document.createElement方法创建一个新的form元素,代码示例: var form = document.createElement(‘form’); form.setA…

    JavaScript 2023年6月10日
    00
  • javascript比较两个日期的先后示例代码

    首先,比较两个日期的先后,在JavaScript中可以通过将两个日期对象(Date对象)转化为毫秒数,然后进行比较。具体步骤如下: 首先创建两个日期对象,可以通过传入参数的方式或者使用无参数的Date()构造函数来创建,示例如下: let date1 = new Date(‘2021-01-01’); let date2 = new Date(‘2021-0…

    JavaScript 2023年5月27日
    00
  • JavaScript用select实现日期控件

    下面是使用JavaScript的select标签实现日期控件的攻略: 1. 准备工作 首先,我们需要在HTML中定义一个日期选择器的容器,以及年、月、日三个select标签来分别展示年、月、日的选择菜单。我们先来看一下HTML代码: <div id="datePicker"> <select id="yearS…

    JavaScript 2023年6月11日
    00
  • input禁止键盘及中文输入,但可以点击

    要实现input禁止键盘及中文输入,但可以点击的效果,需要使用HTML标签和JavaScript语言。下面是具体的实现步骤: HTML标签部分 在HTML标签中,需要给input标签添加readonly和onfocus两个属性。readonly属性可以让input禁止键盘输入,onfocus属性可以在输入框被点击时触发相应的JavaScript函数。具体代码…

    JavaScript 2023年6月11日
    00
  • 前端H5 Video常见使用场景简介

    前端H5 Video是指在网页上通过H5技术播放视频的方式。它相对于Flash视频等传统方式,具有兼容性好、体验优秀等优点,因此在网络视频和在线教育等领域得到广泛应用。下面将详细讲解前端H5 Video常见使用场景。 常见使用场景 1. 网络视频站点 网络视频站点是前端H5 Video最常见的使用场景。视频站点通过前端H5 Video技术,可以实现视频播放、…

    JavaScript 2023年6月11日
    00
  • JavaScript的基础语法和数据类型详解

    我来为你详细讲解一下“JavaScript的基础语法和数据类型详解”的完整攻略。 基础语法 JavaScript是一种弱类型、动态的编程语言。以下是其基础语法: JavaScript代码可以嵌入到HTML文档中,也可以作为独立的js文件引入。 JavaScript代码块的起始和结束都是用大括号{}表示,语句用分号;结尾,但是在特定的情况下,分号可以省略。 J…

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