JavaScript的模块化:封装(闭包),继承(原型) 介绍

JavaScript的模块化是一种将代码按照一定方式进行组织的方法。在JavaScript中,我们可以使用封装和继承实现模块化。

封装

封装是一种通过闭包实现的模块化方式,可以将一些数据和函数放在一个私有的作用域中,从而避免污染全局变量,同时将一些方法暴露出来,使之成为共有的API。

示例1

下面是一个简单的封装示例,通过IIFE(立即调用的函数表达式)创建一个私有的作用域,在其中定义一个私有变量和一个共有方法,将方法exports到全局作用域。

(function(){
  var count = 0;

  function increment() {
    count++;
  }

  function getCount() {
    return count;
  }

  window.counter = {
    increment: increment,
    getCount: getCount
  };
})();

在上述示例中,我们创建了一个计数器,将count和increment方法定义在了IIFE的作用域中,getCount方法被暴露到全局作用域中,可以供其他部分调用。

示例2

下面是另一个封装示例,使用闭包和立即调用的函数表达式(IIFE),创建了一个返回随机数的方法。

var randomNum = (function() {
  var MAX = 100;
  var MIN = 0;

  function random() {
    return Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;
  }

  return random;
})();

console.log(randomNum());

在这个示例中,我们定义了MAX和MIN作为私有变量,创建了一个随机数生成器的函数random,并将这个函数暴露给全局作用域,可以随时调用返回一个随机数。

继承

继承是一种通过原型实现的模块化方式,可以通过原型链将子类和父类连接起来,在子类中增加或重写一些方法。

示例1

下面是一个简单的继承示例,使用原型方法来实现继承,创建一个动物类和狗类,狗类继承自动物类。

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

Animal.prototype.sayName = function() {
  console.log('My name is ' + this.name);
}

function Dog(name) {
  Animal.call(this, name);
}

Dog.prototype = Object.create(Animal.prototype);

Dog.prototype.bark = function() {
  console.log('Woof!');
}

var puppy = new Dog('Buddy');
puppy.sayName();
puppy.bark();

在这个示例中,我们创建了一个动物类,包含一个sayName方法,再创建一个狗类,调用Animal构造函数,使用Object.create方法来连接狗类和动物类,重写了一个bark方法。

示例2

下面是另一个继承示例,使用class和extends来实现继承,改写刚才的狗类。

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

  sayName() {
    console.log('My name is ' + this.name);
  }
}

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

  bark() {
    console.log('Woof!');
  }
}

let puppy = new Dog('Buddy');
puppy.sayName();
puppy.bark();

在这个示例中,我们使用了ES6中的class和extends关键字,简化了代码,但实质上仍然是原型继承。我们定义了一个Animal类,在其中包含一个构造函数和一个方法,再定义一个狗类继承Animal类,并在狗类中重写了一个方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript的模块化:封装(闭包),继承(原型) 介绍 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • web前端开发JQuery常用实例代码片段(50个)

    “web前端开发jQuery常用实例代码片段(50个)”是一篇关于jQuery常用代码片段的文章,该文章包含了50个jQuery实例代码片段,这些代码片段可以快速地实现网页开发中常用的功能。 文章开头简要介绍了jQuery的背景和使用方式,随后列举了50个常用的代码片段,其中包括了网页布局、事件响应、表单处理、动画效果等方面的实例代码,这些实例代码可以帮助开…

    JavaScript 2023年5月28日
    00
  • 使用Cookies保存网站历史浏览记录实例代码

    下面是使用 Cookies 保存网站历史浏览记录的完整攻略。 1. 需求分析 在网站上实现浏览记录的保存,主要的需求分析包括以下几点: 当用户浏览网站时,需要记录用户的浏览历史。 浏览历史需要以列表形式展示在网站上。 浏览历史需要随着用户的浏览动态更新。 浏览历史需要在用户关闭浏览器后依然能够保存。 用户进入网站时需要从 Cookies 中读取保存的浏览历史…

    JavaScript 2023年6月11日
    00
  • JavaScript 数据元素集合与数组的区别说明

    JavaScript 中的数据类型可以分为两类,基本数据类型和复合数据类型。其中,复合数据类型包括对象、函数和数组三种类型。其中,对象和函数分别代表一组或一段逻辑上相互关联的数据和操作,而数组则是一种特殊的对象,用于存储一组按照从0开始的序号排列的值。 简单来说,数组就是可以存储一组值的变量。其中,每个值都有一个对应的序号,也称为索引。JavaScript …

    JavaScript 2023年5月27日
    00
  • JavaScript实现随机点名小程序

    下面是JavaScript实现随机点名小程序的完整攻略: 确定需求 在实现随机点名小程序之前,需要确定具体的需求。本程序的功能主要是:随机从一组学生名单中选中一位学生,并将该学生的名字展示出来。在此基础上,还可以加入更多的功能,比如记录已经点名的学生,排除已经点名的学生,或者在每次点名之后自动刷新学生名单等等。 准备工作 在编写代码之前,需要准备好页面的布局…

    JavaScript 2023年6月11日
    00
  • JS实现控制表格单元格垂直对齐的方法

    控制表格单元格垂直对齐是前端页面布局中经常遇到的问题。接下来,我将分步骤介绍在JS中实现单元格垂直对齐的方法。 步骤1:在HTML中添加表格代码 首先,我们需要在HTML中添加一个表格。下面是一个简单的表格代码示例: <table> <thead> <tr> <th>表头1</th> <th&…

    JavaScript 2023年6月10日
    00
  • JavaScript 替换所有匹配内容及正则替换方法

    下面是关于“JavaScript 替换所有匹配内容及正则替换方法”的完整攻略: 正则表达式替换方法 在 JavaScript 中,使用正则表达式进行文本替换是十分常见的操作。用 RegExp 类型来创建正则表达式,语法为:var regExp = new RegExp(pattern, [flags])。其中,pattern 是正则表达式模式,flags 是…

    JavaScript 2023年6月10日
    00
  • JavaScript实现世界各地时间显示

    当使用 JavaScript 实现世界各地时间显示时,我们可以利用 Date 对象和其方法,将获取的世界各地时区与本地时间进行计算再进行显示。 以下是实现该功能的完整攻略: 步骤一:获取本地时间 在 JavaScript 中,我们可以通过创建 Date 实例来获取当前本地时间。下面是一个获取本地时间的实例: const localTime = new Dat…

    JavaScript 2023年5月27日
    00
  • JavaScript中Function与Object的关系

    JavaScript中Function与Object的关系 在JavaScript中,Function和Object的关系是非常密切的,因为Function就是一种特殊的Object。在JavaScript中,一切皆为对象,不仅包括原始类型(如数字、字符串),也包括函数。 Function是Object的一个子类 在JavaScript中,Function也…

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