JavaScript 中的 IIFE 调用

2024-01-03

我见过两种使用 IIFE 的方法(我知道还有更多):

(function(){
    console.log(this);
}).call(this);

(function(){
    console.log(this);
})();

有什么理由使用.call(this)在第一个上?惯于();在函数内产生相同的上下文?


这取决于代码的执行位置。

.call(this)显式设置this到你传递给的对象.call。仅使用();将设置this to window (or to undefined在严格模式下)。

如果代码在全局范围内执行,它将是相同的。如果没有,那么你会得到不同的结果this不指window (or is undefined).

Example:

var obj = {
   foo: function() {
       (function(){
           console.log(this); // this === obj
       }).call(this); // this === obj

       (function(){
           console.log(this); // this === window
       })();
   }
};

obj.foo();

有关更多信息this on MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中的 IIFE 调用 的相关文章

  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • 检查用户是否连接到 Facebook,然后检查他是否喜欢某个页面

    有没有什么方法可以检查用户是否在我的外部页面上连接到 Facebook 而不让他们允许我的应用程序之一 同样的问题也适用于 检查用户是否喜欢某个页面 我检查了大约 20 个问题和 3 4 个教程 似乎所有问题都在讨论内部脚本 粉丝页面 应用
  • 如何在光标下的所有元素上调用 mouseover?

    我有一个网络应用程序 每次单击时都会创建一个点 见下文 当我将鼠标悬停在一堆点上时 我希望光标下的每个点都会触发 mouseover 或 mouseenter 事件 然而 只有一个事件被触发 即堆栈 顶部 的点的事件 当鼠标移动到一堆多个点
  • 如何根据按钮单击折叠和展开 Kendo UI 树视图中的所有树节点?

    这是行不通的 您可以使用此代码 1 崩溃 折叠kendoTree查看文档 http docs kendoui com api web treeview methods collapse treeview kendoTreeView var
  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M
  • 如何在 Node.js 中让一个 EventEmitter 监听另一个 EventEmitter?

    我想做这样的事情 var events require events var emitterA new events EventEmitter var emitterB new events EventEmitter emitterA ad
  • 从未定义解构时避免错误

    可以说我有这个代码 const x y point Babel 会将其变成 var point point x point x y point y 这很好 但是如果点未定义怎么办 现在我得到一个错误 Cannot read property
  • Telegram 授权无默认按钮

    使用 Telegram 第 3 方授权的唯一有记录的方法是使用其提供的脚本https core telegram org widgets login https core telegram org widgets login 这个脚本 正如
  • 使用 Javascript / Jquery 的本地存储(不使用 HTML5)

    我想在 javascript 或 jquery 中复制本地存储概念 类似于 HTML5 但不幸的是我不知道如何开始 任何人都可以建议如何使用 javascript 或 jquery 实现本地存储 不使用 HTML5 这是一个有点愚蠢的差事
  • 使用 jQuery 仅从字符串末尾修剪空格

    我知道 jQuery trim 函数 但我需要的是一种仅从字符串末尾修剪空格的方法 而不是开头 So str this is a string 会成为 str this is a string 有什么建议么 Thanks 您可以使用正则表达
  • 光滑的轮播缓动示例

    我正在使用 Slick Carousel http kenwheeler github io slick http kenwheeler github io slick 但不知道如何合并不同的幻灯片切换 有人有例子可以分享吗 这是我目前拥有
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • setInterval 内的返回值

    我想在 setInterval 内返回一个值 我只想以一定的时间间隔执行一些操作 这就是我尝试过的 function git limit var i 0 var git setInterval function console log i
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 使用 JavaScript 的计时器

    我想使用java脚本实现计时器 我想随着间隔的变化而减少计时器 Example假设我的计时器从 500 开始 我想要根据级别减少计时器 例如1 一级定时器应减1 且递减速度应较慢 2 2级定时器应递减2 递减速度应为中等3 3级定时器应减3
  • Meteor.js 登录事件

    因此 我对 Meteor 框架和 JavaScript 总体来说还很陌生 但我正在使用该框架开发一个小项目 以尝试让自己达到标准 基本上我正在开发一个微博客网站 目前 用户可以通过多种服务登录 fb google 等 我通过插入所需 url
  • 使用Promise而不拒绝它会导致内存泄漏吗? [复制]

    这个问题在这里已经有答案了 代码如下 function test value return new Promise function fulfill reject try fulfill true catch e throw e 我担心的是
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 如何在 JavaScript 中获取浮点数的小数位?

    我想要的是与 Number prototype toPrecision 几乎相反的 这意味着当我有数字时 它有多少位小数 例如 12 3456 getDecimals 4 对于任何想知道如何更快地完成此操作 无需转换为字符串 的人 这里有一

随机推荐

  • 正则表达式阻止 nginx 中的 url

    我想阻止访问末尾有多余字符的网址 例如 我希望 nginx 阻止请求https www example com url pattern amp extra chars more extra 但希望它允许https www example c
  • 获取android中的账户列表

    我正在开发一个应用程序 我需要在其中查看用户手机中的帐户列表 我已经执行了这段代码 它似乎工作得很好 我面临的唯一问题是我想要获取帐户列表而不仅仅是一个帐户 那么如何实现这一目标呢 我很确定需要一个列表视图 但我没有得到任何关于如何在这里使
  • 移动Web应用程序的服务器端架构

    在我开发过的大多数桌面 Web 应用程序中 您都需要一个服务器端 Web 框架 服务器端 Web 框架 Struts Spring MVC 等 具有某种用于处理请求的控制器 然后是用于生成动态内容的模板引擎 Velocity JSP 等 现
  • Oracle 10G XE 的 JDBC 驱动程序

    我已经安装了Oracle 10G XE 我想使用 JDBC 连接到它 我应该使用哪个驱动程序以及从哪里下载它 谢谢 在安装了服务器的机器上 Oracle JDBC 驱动程序位于ORACLE HOME jdbc lib 就放ojdbc14 j
  • 如何暂停用js和html5制作的简单画布游戏?

    在遵循 YouTube 上的一些简单教程后 我创建了一个简单的贪吃蛇游戏 问题是游戏没有暂停功能 例如 当按 P 时 游戏应该暂停 恢复 并且当蛇碰到画布边界时 游戏会自行重新启动 但这是另一个问题 这是我拥有的游戏的完整代码 https
  • 函数参数的 JavaScript 执行上下文

    function Apple this name apple function Orange this name orange this apple new Apple this apple onCalled function alert
  • 如何访问nestjs服务器上上传的图像

    我有一个 Nestjs 服务器 并且已经上传了图像 但是当我尝试访问这些图像时 它们是一堆无法解释为图像的东西 我还尝试将它们转换为 blob 然后将其转换为 objectURL 然后将其设置为 img 标签的 src 但这也不起作用 上传
  • Git 推送失败。错误:RPC 失败;卷曲 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 60

    当我尝试将我的代码推送到bitbucket 我在终端中收到此错误 LibreSSL SSL read SSL ERROR SYSCALL errno 60 stopped the pause stream Closing connectio
  • 属性更改时不调用按钮命令 CanExecute

    我有一个带有文本框和按钮的表单 当该文本框的值更改时 按钮命令不会调用其命令的 CanExecute 方法 命令参数已设置但似乎没有更改 加载窗口后 该按钮保持禁用状态
  • ie8 respond.js 'undefined' 为 null 或不是对象

    我在用着响应 js https github com scottjehl Respond 该库 1 并且我收到该对象的以下函数的错误 translate function styles href media here I got undef
  • 如何防止调用 System.exit() 终止 JVM?

    我几乎可以肯定这是不可能的 但值得一试 我正在为某个工具编写命令行界面 我说的是一个调用另一个 Java 应用程序的 Java 应用程序 该工具调用System exit执行后 这又终止了我自己的执行环境 我不想要这样 有什么办法可以忽略S
  • 使用 jquery 和 ajax 发送授权标头

    我在 stackoverflow 上查看了以下问题 但我想做的事情却没有运气 Ajax 授权请求标头一次又一次失败 https stackoverflow com questions 9820170 ajax authorization r
  • grails spring security core - 为隐藏的脚手架操作添加安全性

    人们可以使用注释 例如 Secured ROLE ADMIN 在一个操作或整个类上 似乎工作正常 应用 spring security core 提供的安全控制 有没有办法将安全性应用于隐藏的脚手架操作 而不将安全约束应用于整个类 我想对某
  • 如何缓存离线模式下的网页内容?

    我正在开发一个应用程序的一部分 其中应用程序应该从在线存储 网站 仅为此目的而构建 读取产品图像和价格 对产品图像和价格进行本地存储 以便它可以离线时显示产品图片和价格 会有一个按钮 一旦按下 它的工作就是同步本地缓存 我怎样才能实现这个
  • 消除成员函数中的幻数的最佳实践

    我有一种重复使用幻数的方法 但仅在一种方法中使用 class Foo def Bar str year str 0 1 to i 2000 month str 2 ord 48 day str 3 ord 48 hour str 4 ord
  • Office Communicator 状态如何工作?

    我有兴趣了解更多有关微软办公通讯器 http office microsoft com en us communicator default aspxIM 客户端 以及它如何确定您的存在 即您是否在计算机旁或不在计算机旁 任何人都可以向我指
  • 如何允许Tomcat WAR应用程序写入文件夹

    我想要我的网络应用程序作为战争部署ROOT war具有写入权限 var www html static images这样它就可以将上传和转换的图像写入该文件夹 以便 nginx 可以静态地为其提供服务 目前它不起作用并触发java nio
  • 易失性无符号整型 * const

    下面这行代码的目的是什么const关键词 volatile unsigned int const UART0DR unsigned int 0x10009000 我明白了volatile unsigned int 有点 但为什么是const
  • 如何在ag-grid中预设列过滤器

    我有一个Ionic Angular应用程序使用ag grid 我希望某些网格在加载网格时自动应用过滤器 用户无需执行任何操作 我尝试了以下方法 onGridReady params params api sizeColumnsToFit g
  • JavaScript 中的 IIFE 调用

    我见过两种使用 IIFE 的方法 我知道还有更多 function console log this call this function console log this 有什么理由使用 call this 在第一个上 惯于 在函数内产生