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日

相关文章

  • 如何用javascript正则表达式验证身份证号码是否合法

    以下是使用 JavaScript 正则表达式验证身份证号码是否合法的攻略,包含了具体步骤和两条示例: 1. 正则表达式模式 身份证号的验证可以使用正则表达式来实现,身份证号具有一定的规则,我们可以写出相应的正则表达式模式来匹配这些规则。 身份证号码的验证规则如下: 长度为18位; 前17位均为数字; 第18位可以是数字,也可以是大写字母X。 因此,我们可以使…

    JavaScript 2023年5月19日
    00
  • 什么是JavaScript

    JavaScript是一种脚本语言,是用于Web开发的一种编程语言,在网页中主要负责实现交互效果和动态效果,如:表单校验、动画效果、音频视频控制、数据可视化等功能。 JavaScript最初由Netscape公司开发,在1995年被首次引入网页中,从此开始成为解决客户端Web开发的主要语言之一。现在,JavaScript已经发展成为一种非常强大、灵活、广泛应…

    JavaScript 2023年5月17日
    00
  • JavaScript中指定函数名称的相关方法

    JavaScript中指定函数名称的相关方法主要有以下两种。 方法一:使用函数声明 在JavaScript中,我们可以使用函数声明来指定函数名称。函数声明的基本语法如下: function functionName() { // 函数体 } 其中,functionName就是要指定的函数名称,函数体是函数要执行的代码。 例如,我们想要定义一个函数,用来计算两…

    JavaScript 2023年5月27日
    00
  • JavaScript 中有了Object 为什么还需要 Map 呢

    JavaScript 中的 Object 是一种键值对集合的数据结构,可以被用来存储和访问任意类型的数据。而 Map 是一种新的对象类型,它不同于普通的 Object,可以被用来存储键值对,其中键和值都可以是任意类型的数据。 虽然 Object 是 JavaScript 中最常用的数据结构之一,但是 Map 在某些情况下更为实用。下面列举了两个使用 Map …

    JavaScript 2023年6月10日
    00
  • JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具

    作为一个网站作者,可使用以下步骤进行JavaScript(JS)压缩/混淆/格式化批处理,以加强效率和文件安全性。 第一步:安装Node.js Node.js是一个基于Chrome JavaScript运行时建立的平台,可运行在多个操作系统上,并具有事件驱动、非阻塞I/O的特点。我们需要使用Node.js环境运行JS压缩/混淆/格式化工具。 在官网下载地址中…

    JavaScript 2023年5月19日
    00
  • JavaScript实现cookie的操作

    下面是详细讲解 JavaScript 实现 Cookie 操作的攻略。 什么是 Cookie Cookie(中文翻译为“网页 Cookie”或者“浏览器 Cookie”)是网站为了辨别用户身份的一种标识,是存在用户本地终端上的数据。Cookie 是小型文本文件,由网站服务器发送给用户浏览器,浏览器会将其存储在本地,之后每次请求该网站时都会携带该 Cookie…

    JavaScript 2023年6月11日
    00
  • Javascript读取cookie函数代码

    下面我为您讲解如何编写Javascript读取cookie函数代码的完整攻略。 第一步:创建函数 首先,我们需要创建一个读取cookie值的函数。可以按照以下方法编写: function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(…

    JavaScript 2023年6月11日
    00
  • JavaScript中判断整数的多种方法总结

    JavaScript中判断整数有多种方法,以下是一些经典的方法: 方法一:使用正则表达式 function isInteger(num) { return /^\d+$/.test(num); } 该方法通过正则表达式来判断一个字符串是否为整数,其中正则表达式/^\d+$/表示以数字开头并以数字结尾,中间包含一到多个数字。 示例1: console.log(…

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