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日

相关文章

  • 深入理解JavaScript系列(44):设计模式之桥接模式详解

    这里是“深入理解JavaScript系列(44):设计模式之桥接模式详解”的完整攻略: 什么是桥接模式? 桥接模式是一种结构型设计模式,旨在将一个大类或一系列紧密相关的类拆分成抽象和实现两个独立的维度。通过这种方式,可以在不改变客户端代码的前提下,动态地组合和切换不同的抽象和实现部分,以满足不同的需求。 桥接模式的核心是将抽象部分与实现部分分离,它使用了组合…

    JavaScript 2023年6月11日
    00
  • JavaScript数组去重的6个方法

    下面是对于“JavaScript数组去重的6个方法”的完整攻略。 方法一:Set去重 使用ES6的Set,可以直接将数组转化为Set集合,再转化回数组的时候就自然地去重了。 const arr = [1,2,3,1,2,4]; const newArr = […new Set(arr)]; console.log(newArr); // [1,2,3,4…

    JavaScript 2023年5月27日
    00
  • jquery+ajax每秒向后台发送请求数据然后返回页面的代码

    首先,我们需要明确这个需求的实现流程:前端通过jQuery发起Ajax请求,后端接收请求并处理,返回数据给前端,前端再通过jQuery将数据渲染至页面上。其中,需要注意的是前端需要每秒向后端发送一次请求,需要使用JavaScript定时器来完成。 下面,我提供两个示例,分别是使用原生JavaScript和jQuery实现每秒向后端发送请求并更新页面的代码。 …

    JavaScript 2023年6月11日
    00
  • JS实现点击登录弹出窗口同时背景色渐变动画效果

    JS实现点击登录弹出窗口同时背景色渐变动画效果可以分为以下几个步骤: HTML结构的修改:需要在HTML中添加一个按钮和一个弹窗,同时要添加一个全屏蒙层,作为背景色渐变的动画效果。 <button id="loginBtn">登录</button> <div id="loginModal"…

    JavaScript 2023年6月11日
    00
  • ImageZoom 图片放大镜效果(多功能扩展篇)

    ImageZoom是一款非常实用的图片放大镜效果插件,通过该插件可以实现图片放大、缩小、滑动等操作,增强了用户的交互体验。本篇攻略将从多个方面对ImageZoom进行扩展并实例演示,具体如下: 安装 首先,我们需要在页面中引入ImageZoom的相关文件。可以通过cdnjs或unpkg等CDN包管理工具引入ImageZoom的css和js文件。 <he…

    JavaScript 2023年6月10日
    00
  • javascript获取当前的时间戳的方法汇总

    总结 获取当前时间戳是前端开发中常见的操作,通过JavaScript可以实现多种方式获取当前时间戳。本文将综合介绍一些获取当前时间戳的方法。 Date.now()方法 Date.now()方法是ECMAScript 5引入的方法。它返回的是当前时间距离Unix Epoch的毫秒数。Unix Epoch是1970年1月1日UTC的午夜,相当于这一时刻的时间戳为…

    JavaScript 2023年5月27日
    00
  • JS 做一个简单的 Parser

    前言 前些天偶然看到以前写的一份代码,注意有一段尘封的代码,被我遗忘了。这段代码是一个简单的解析器,当时是为了解析日志而做的。最初解析日志时,我只是简单的正则加上分割,写着写着,我想,能不能用一个简单的方案做个解析器,这样可以解析多种日志。于是就有了这段代码,后来日志解析完了,没有解析其它日志就给忘了。再次看到这段代码,用非常简单易读的代码就实现了一个解析器…

    JavaScript 2023年4月18日
    00
  • js获取当前年月日-YYYYmmDD格式的实现代码

    获取当前年月日的实现代码需要分三个步骤: 获取当前日期时间 分别获取年、月、日 拼接成指定格式的日期字符串 获取当前日期时间 在 JavaScript 中,可以使用 new Date() 来获取当前日期时间。 const now = new Date(); 分别获取年、月、日 使用 Date 对象的 getFullYear()、getMonth() 和 ge…

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