JavaScript 中级笔记 第三章

yizhihongxing

JavaScript 中级笔记 第三章攻略

1. 闭包(Closures)

闭包是 JavaScript 中一个重要的概念,它允许函数访问其词法作用域之外的变量。闭包在许多情况下都非常有用,例如在创建私有变量和实现模块化时。

示例 1:创建私有变量

function counter() {
  let count = 0;

  return function() {
    count++;
    console.log(count);
  };
}

const increment = counter();
increment(); // 输出 1
increment(); // 输出 2

示例 2:实现模块化

const calculator = (function() {
  let result = 0;

  function add(num) {
    result += num;
  }

  function subtract(num) {
    result -= num;
  }

  function getResult() {
    return result;
  }

  return {
    add,
    subtract,
    getResult
  };
})();

calculator.add(5);
calculator.subtract(2);
console.log(calculator.getResult()); // 输出 3

2. 原型链(Prototype Chain)

JavaScript 中的每个对象都有一个原型(prototype),原型是一个对象,它包含共享的属性和方法。当我们访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript 会沿着原型链向上查找。

示例 1:原型链继承

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

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

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

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

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

const myDog = new Dog(\"Max\", \"Labrador\");
myDog.sayName(); // 输出 \"My name is Max\"
myDog.bark(); // 输出 \"Woof!\"

示例 2:使用原型链扩展内置对象

Array.prototype.sum = function() {
  let total = 0;
  for (let i = 0; i < this.length; i++) {
    total += this[i];
  }
  return total;
};

const numbers = [1, 2, 3, 4, 5];
console.log(numbers.sum()); // 输出 15

以上是 JavaScript 中级笔记第三章的攻略,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 中级笔记 第三章 - Python技术站

(0)
上一篇 2023年8月20日
下一篇 2023年8月20日

相关文章

  • c语言全局变量和局部变量问题及解决汇总

    C语言全局变量和局部变量问题及解决汇总 什么是全局变量和局部变量? 在C语言中,全局变量是在函数体内部未定义、在函数体外部定义的变量。全局变量拥有全局作用域,可以被程序中的任何函数访问和修改。而局部变量是在函数内部定义和使用的变量,只有在函数内部有效,出了函数就失效了。 全局变量和局部变量的问题 尽管全局变量可以被程序中的任何函数访问,但是过多地使用全局变量…

    other 2023年6月26日
    00
  • 访问编码后的中文URL返回404错误的解决方法

    当我们访问编码后的中文URL时,有时会遇到404错误的情况,这是由于服务器未对编码后的URL进行解码导致的。解决这种问题的方法是对URL进行解码,使其转换回中文字符。 下面是解决“访问编码后的中文URL返回404错误的解决方法”的完整攻略: 步骤一:确认是否是URL编码问题 访问编码后的URL时,如果出现404错误,可以先确认是否是URL编码的问题。可以通过…

    other 2023年6月26日
    00
  • Java字节缓存流的构造方法之文件IO流

    Java字节缓存流的构造方法之文件IO流攻略 Java字节缓存流是一种用于处理字节数据的流,它提供了缓存功能,可以提高IO操作的效率。其中,文件IO流是字节缓存流的一种常见用法,用于读取和写入文件。 构造方法 Java字节缓存流的构造方法之文件IO流有以下两种: FileInputStream构造方法:用于创建一个字节缓存输入流,从文件中读取数据。 java…

    other 2023年8月6日
    00
  • 全屏背景:15个jQuery插件实现全屏背景图像或媒体

    全屏背景:15个jQuery插件实现全屏背景图像或媒体 作为一个网站的站长,你肯定想为你的网站添加一些令人惊叹的特性,比如设置一个动态的全屏背景来吸引用户的注意。在这篇文章中,我将为您介绍15个使用jQuery实现全屏背景图像或媒体的插件,这些插件都被广泛地使用于现代的网站设计之中。 1. Supersized Supersized是一个免费开源的jQuer…

    其他 2023年3月28日
    00
  • JS实现自定义弹窗功能

    当用户操作的某些行为需要提示时,一般会使用弹窗(Modal)来提醒用户。JS实现自定义弹窗功能可以增强网站的交互体验,并且也有助于优化用户体验。 下面是JS实现自定义弹窗功能的完整攻略: 步骤一:创建弹窗模板 首先,我们需要创建一个弹窗模板,在这个模板中设置弹窗的样式、布局等。以下是一个简单的弹窗模板: <div class="modal&q…

    other 2023年6月25日
    00
  • github概述

    GitHub 概述 GitHub 是一个基于互联网的代码托管平台,可以帮助开发者存储、管理和分享代码。本文将详细介绍 GitHub 的概述,包括基本概念、功能特点、使用方法和示例说明。 基本概念 GitHub 是一个基于互联网的代码托管平台,由 Chris Wanstrath、PJ Hyett 和 Preston-Werner 于 2008 年创建。GitH…

    other 2023年5月6日
    00
  • vue中注册组件的两种方式详解(全局注册&& 局部注册)

    Vue中注册组件的两种方式详解(全局注册 && 局部注册) 在Vue中,我们可以使用两种方式来注册组件:全局注册和局部注册。这两种方式都有各自的优势和用途。 全局注册 全局注册是将组件注册为全局可用的,可以在任何Vue实例中使用。下面是全局注册组件的步骤: 在Vue实例之前,使用Vue.component方法来注册组件。 在组件注册时,需要指…

    other 2023年8月19日
    00
  • 关于python:使用numpy.take进行更快的花式索引

    以下是关于“使用numpy.take进行更快的花式索引”的完整攻略,包含两个示例。 使用numpy.take进行更快的花式索引 Python中,我们可以使用numpy.take方法进行更快的花式索引。以下是关于如何使用numpy.take方法的详细攻略。 1. 使用numpy.take方法 numpy.take方法可以根据索引数组从中获取元素。以下是一个示例…

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