JavaScript高级程序设计 阅读笔记(十三) js定义类或对象

JavaScript高级程序设计第十三章主要讲述了JavaScript中定义类或对象的方式及相关概念,包括工厂模式、构造函数模式、原型模式、组合模式等。下面我会针对这些主题进行详细讲解。

工厂模式

工厂模式是一种创建对象的方法,它利用函数来创建不同类型的对象。可以通过工厂模式来创建任意数量的对象。它的一个关键优势是,它可以隐藏创建对象的细节,使得外部代码只需知道返回的对象即可,而不用在意对象是如何创建的。

示例代码如下:

function createPerson(name, age, job) {
  var o = new Object();
  o.name = name;
  o.age = age;
  o.job = job;
  o.sayName = function() {
    console.log(this.name);
  };
  return o;
}

var person1 = createPerson("Tom", 29, "Software Engineer");
var person2 = createPerson("Jerry", 31, "Doctor");

person1.sayName(); // "Tom"
person2.sayName(); // "Jerry"

在这个例子中,我们创建了两个不同的人员对象并通过等于号将其赋值给不同的变量。这两个变量持有的引用代表两个不同的对象。同时,我们使用了工厂模式,其中函数createPerson()充当了工厂的角色。

构造函数模式

除了工厂模式,JavaScript中还有一种定义类或对象的方式叫做构造函数。构造函数几乎相当于传统面向对象编程中的类,可以用来创建多个相似的对象。构造函数的特点是使用new关键字创建对象,而函数名通常以大写字母开头。

示例代码如下:

function Person(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function() {
    console.log(this.name);
  };
}

var person1 = new Person("Tom", 29, "Software Engineer);
var person2 = new Person("Jerry", 31, "Doctor");

person1.sayName(); // "Tom"
person2.sayName(); // "Jerry"

在这个例子中,我们使用了构造函数Person()并从中创建了两个对象。我们使用了this关键字定义了对象属性和方法。然后,我们使用了new关键字来创建对象,并在构造函数中定义了对象的属性和方法。这样我们可以轻松地通过构造函数来创建多个相似的对象。

原型模式

原型模式是一种定义类和对象的方式,面向对象编程中广泛适用。JavaScript中的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象。这个对象中包含了可以通过该函数创建的实例的共享方法和属性。

示例代码如下:

function Person() {}

Person.prototype.name = "Tom";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function() {
  console.log(this.name);
};

var person1 = new Person();
person1.sayName(); // "Tom"

var person2 = new Person();
person2.sayName(); // "Tom"

在这个例子中,我们定义了一个构造函数Person(),并在其原型上定义了属性和方法。在这种情况下,Person()的三个属性name、age和job就是Person()的所有实例所共享的属性。在创建Person的实例时只会在实例中创建一个指向Person.prototype的指针。

组合模式

组合模式是一个优秀的JavaScript编程实践。它结合了构造函数模式和原型模式的优点,实现了创建具有共享属性和方法的对象的GitHub。
示例代码如下:

function Person(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
}

Person.prototype = {
  sayName: function() {
    console.log(this.name);
  }
};

var person1 = new Person("Tom", 29, "Software Engineer");
var person2 = new Person("Jerry", 31, "Doctor");

person1.sayName(); // "Tom"
person2.sayName(); // "Jerry"

在这个例子中我们使用了构造函数模式来定义name、age和job三个属性,然后使用原型模式来定义sayName()方法。由于通常情况下,方法比属性更重要,因此可以说这种方法比构造函数模式更为常用和推荐。这种创建对象的方式既兼顾了高效性,又使代码简洁易读。

以上就是JavaScript高级程序设计第十三章提到的工厂模式、构造函数模式、原型模式和组合模式等定义类或对象的方式及相关概念的完整攻略,希望能够帮助你更好地理解这些概念。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计 阅读笔记(十三) js定义类或对象 - Python技术站

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

相关文章

  • 浅谈Javascript 执行顺序

    浅谈JavaScript 执行顺序 在JavaScript中,代码执行的顺序可以影响到程序的执行结果。具体来说,程序在执行时会按照一定的顺序依次执行各个语句。本文将深入讲解JavaScript中的执行顺序。 代码执行阶段 代码执行阶段可以分为两个阶段: 解析阶段 执行阶段 其中,解析阶段是将代码转化成抽象语法树(AST),并进行语义分析,确定变量、函数等的声…

    JavaScript 2023年5月18日
    00
  • JavaScript的数据类型转换原则(干货)

    JavaScript的数据类型转换原则(干货) 1. 数据类型转换的基本原则 在JavaScript中,我们经常需要将不同类型的数据进行转换,特别是在进行运算、比较和赋值等操作的时候。因此,了解数据类型转换的基本原则对于编写高质量的JavaScript代码是非常重要的。 1.1. 隐式类型转换 JavaScript中有两种类型转换方式:显式类型转换和隐式类型…

    JavaScript 2023年5月28日
    00
  • javascript中clone对象详解

    Javascript中Clone对象详解 在Javascript中,有时候我们需要对一个对象进行复制或者克隆,这个时候我们可以使用对象的clone方法来实现。本文将详细介绍如何使用Javascript中的clone方法来进行对象的克隆和复制。 常见的Javascript对象clone方法 在Javascript中,通常我们可以使用以下三种方式来进行对象的克隆…

    JavaScript 2023年5月27日
    00
  • 浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用

    下面我来详细讲解“浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用”的完整攻略。 一、什么是 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON 数据格式如下所示: { "name": "Michael", "age"…

    JavaScript 2023年5月27日
    00
  • 详解JavaScript操作HTML DOM的基本方式

    让我来详细讲解一下“详解JavaScript操作HTML DOM的基本方式”的完整攻略。 HTML DOM是什么 在开始说明JavaScript操作HTML DOM的基本方式之前,我们先来了解一下HTML DOM是什么。HTML DOM(文档对象模型)是指把HTML文档当作一个树形结构,在JS中可以用DOM API访问和操作这个树形结构,这样就可以改变HTM…

    JavaScript 2023年6月10日
    00
  • JS 判断代码全收集

    以下是详细讲解“JS 判断代码全收集”的完整攻略,包含了两条示例供您参考。 什么是JS判断代码全收集? 在Web开发中,很多时候需要获取并处理用户输入的数据,从而完成各种功能。但是,有些用户可能会利用特定的手段来绕过你的输入验证,注入恶意代码,从而对你的网站造成威胁。为了防止这样的情况发生,我们需要对用户输入的数据进行全收集。 如何判断代码全收集? 我们可以…

    JavaScript 2023年5月19日
    00
  • JSONObject与JSONArray使用方法解析

    JSONObject与JSONArray使用方法解析 在Java开发中,我们经常需要操作JSON格式数据,而Java提供了两个类来操作JSON数据,分别是JSONObject和JSONArray。 JSONObject JSONObject是JSON的对象表示法,在Java中,我们可以使用JSONObject来构建一个JSON对象。 创建JSONObject…

    JavaScript 2023年6月11日
    00
  • JavaScript数组Array对象增加和删除元素方法总结

    JavaScript数组Array对象增加和删除元素方法总结 增加元素 push() 方法 可以使用push()方法将元素添加到数组的末尾。 语法: arr.push(item1, item2, …, itemX) 示例: var fruits = ["apple", "banana"]; fruits.push(…

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