JavaScript高级程序设计(第3版)学习笔记9 js函数(下)

《JavaScript高级程序设计(第3版)学习笔记9 js函数(下)》一文主要讲解了 JavaScript 中函数的进阶应用,包括函数作为对象、闭包、函数自执行等内容,下面是具体的攻略:

1. 函数作为对象

在 JavaScript 中,函数同时也是对象,因此它们可以拥有属性和方法。函数的属性通常是直接在函数对象上定义,而方法则是定义在函数的原型对象上。

例如,在一个自定义的函数对象上定义属性和方法的示例代码如下:

// 定义一个自定义函数对象 MyFunction
function MyFunction() {}

// 在 MyFunction 上定义一个属性
MyFunction.myProperty = "Hello World!";

// 在 MyFunction.prototype 上定义一个方法
MyFunction.prototype.myMethod = function() {
  console.log(this.myProperty);
};

// 创建 MyFunction 的实例并调用 myMethod 方法
var myFuncObj = new MyFunction();
myFuncObj.myMethod(); // 输出 "Hello World!"

2. 闭包

闭包是指在一个函数内部创建另一个函数,并且内部函数可以访问外部函数的变量。这种特性使得闭包在实践中非常有用,因为它可以用来创建私有变量、分时函数等。

一个简单的闭包示例代码如下:

function createCounter() {
  var counter = 0;
  return function () {
    return ++counter;
  };
}

// 创建一个计数器并调用它的方法
var myCounter1 = createCounter();
console.log(myCounter1()); // 输出 1
console.log(myCounter1()); // 输出 2

// 创建另一个计数器并调用它的方法
var myCounter2 = createCounter();
console.log(myCounter2()); // 输出 1
console.log(myCounter2()); // 输出 2

这里的 createCounter() 函数返回了一个匿名函数,并且这个匿名函数可以访问 createCounter() 函数中的 counter 变量,因此每次调用匿名函数时都会使 counter 变量的值加 1。

3. 函数自执行

函数自执行是指在定义函数的同时立即调用它。这种技巧可以用来创建一些只需要一次性运行而不需要再次调用的代码块,例如:

(function () {
  // 在这里定义一些只需要一次性运行的代码
  console.log("Hello World!");
})();

这里的 (function () { ... })() 是一个函数自执行表达式,在定义函数的同时立即调用它。由于这个函数只需要运行一次,因此在定义它的时候就直接调用了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计(第3版)学习笔记9 js函数(下) - Python技术站

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

相关文章

  • utf-8编码引起js输出中文乱码的解决办法

    下面是关于“utf-8编码引起js输出中文乱码”的解决办法的完整攻略。 问题描述 当我们在使用 JavaScript 输出中文时,如果页面的编码方式为 utf-8,那么经常会出现中文乱码的问题。就算页面的编码设置正确且合法,但还是无法避免可能遇到的中文输出乱码问题。接下来我们将介绍如何解决这个问题。 解决办法 一个常见的解决方法是将需要输出的中文字符转为 u…

    JavaScript 2023年5月20日
    00
  • 使用localStorage替代cookie做本地存储

    使用localStorage替代cookie做本地存储主要是为了避免cookie的一些限制,比如存储大小限制、跨域限制等。下面是使用localStorage做本地存储的完整攻略: 1. 检测浏览器是否支持localStorage if (typeof localStorage === "undefined" || localStorage…

    JavaScript 2023年6月11日
    00
  • 小程序表单认证布局及验证详解

    小程序表单认证布局及验证详解 背景分析 在小程序中,表单认证(即用户输入的表单信息的验证)是一个比较基础的功能,它能够帮助我们检查用户输入的格式是否正确,从而提高应用的稳定性和友好性。下面是针对小程序表单认证的布局及验证过程的详解。 布局方式 在小程序中,表单通常采用form组件实现。在form内,可以设置多个input组件,每个input组件可能包含一个或…

    JavaScript 2023年6月10日
    00
  • TypeScript中使用getElementXXX()的示例代码

    下面是详细讲解“TypeScript中使用getElementXXX()的示例代码”的完整攻略: 1. 简介 在前端开发中,我们经常需要使用DOM元素进行页面操作。TypeScript是JavaScript的超集,因此在使用TypeScript时,我们也需要使用DOM元素。这时候,我们就需要使用getElementXXX()方法来获取DOM元素。 getEl…

    JavaScript 2023年6月10日
    00
  • 谈谈JavaScript中的垃圾回收机制

    当浏览器执行JavaScript代码时,浏览器会在内存中分配空间来存储变量、函数、对象等数据。由于JavaScript是一种动态类型的语言,因此变量类型和值的大小在运行时是不确定的,这就需要在内存中动态分配和释放空间。为了确保内存得到充分的利用,在一些不再使用的数据处理完后,我们需要将其从内存中释放掉。这就是JavaScript中的垃圾回收机制。 垃圾回收算…

    JavaScript 2023年6月10日
    00
  • JavaScript实现页面滚动图片加载(仿lazyload效果)

    JavaScript实现页面滚动图片加载(仿lazyload效果) 概述 在网站中,经常会有长页式的页面,滚动页面时会不断加载图片,但是如果在页面的初次加载时一次性加载所有的图片,会给用户带来不必要的流量浪费,同时也会影响页面加载速度。因此,我们可以通过JavaScript实现页面滚动图片加载,去实现对用户体验的优化。 本攻略将介绍一种基于lazyload思…

    JavaScript 2023年6月11日
    00
  • 遍历js中对象的属性和值的实例

    遍历JS对象的属性和值,通常采用两种方式:for…in循环和Object.keys()方法。 for…in循环 for循环可以遍历对象中所有可枚举的属性,并且对每一项执行指定的操作。 const obj = { name: "Tom", age: 18, gender: "male" }; for (let k…

    JavaScript 2023年5月27日
    00
  • blob转换成string格式同步调用问题解决分析

    问题描述: 在开发过程中,我们有时会需要将Blob数据类型转换为String类型。Blob对象表示不可变、原始数据的类文件对象。但是,Blob类型的数据转换为String类型时,会涉及到异步回调的执行问题,常常导致数据无法按预期输出或报错。所以,本文将会讲解 Blob转换为String格式的同步调用问题,并提供解决方案。 解决方案: 使用FileReader…

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