Javascript 嵌套函数失去作用域

2024-03-30

有人可以解释一下以下代码的范围绑定吗

window.name = "window";

object = {
       name: "object",
       method: function() {
             nestedMethod: function() {
                   console.log(this.name);
             }
             nestedMethod();
       }
}

object.method();  // print 'window'

我认为我的问题更多的是关于this...为什么是this失去范围并默认为全局范围?我们创建的所有匿名函数都会在全局范围内吗?


每当您调用函数时,只需编写func(), this函数内部将指向全局对象。在你的情况下,你写:

nestedMethod();

So this inside nestedMethod是窗口对象。您可以使用call (or apply) 手动为您的函数调用定义上下文:

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

Javascript 嵌套函数失去作用域 的相关文章

随机推荐

  • 从序列化的 post_meta (PHP) 中的数组中过滤一些值

    我在 WordPress 中设置了自定义帖子类型 艺术家 我有一个插件可以序列化来自艺术家的元信息 并且我需要按通道过滤此信息 channel s 6 trance 它也在序列化元 show data 中 a 1 s 32 57fba1b1
  • 在c#中比较RGB颜色

    我正在尝试找到一种方法来比较两种颜色以找出它们的相似程度 我似乎找不到有关该主题的任何资源 因此我希望在这里得到一些指示 理想情况下 我希望得到一个分数来表明它们有多相似 例如 0 到 100 其中 100 相等 0 完全不同 Thanks
  • BeautifulSoup:从锚标记中提取文本

    我想提取 来自以下 src 的文本image tag and 锚标记的文本位于div类数据 我成功地提取了 img src 但在从锚标记中提取文本时遇到了问题 a class title href http www amazon com N
  • 上传文件限制

    如何限制上传文件 例如 如果数据库已有 5 个条目 则不应采用第 6 个条目 并展示您只能拥有 5 个文件 我的代码
  • 如何在 MATLAB 中创建用于播放、暂停、快进和快退视频的 GUI?

    我是 MATLAB 新手 我正在尝试创建一个 GUI 来逐帧播放 暂停 快进和快退 avi 视频 目前 我可以通过切换按钮播放和暂停视频 但是当我再次按下播放时 视频从零帧开始播放 我意识到我需要存储下次按播放时使用的帧号 但我不知道该怎么
  • 为什么我会收到 InvalidDnDOperationException?

    I m sorry I don t like asking why am I getting exception questions on StackOverflow bit ironic now that I think of it bu
  • 存储指向堆栈值的指针(Golang)

    我正在尝试用 Go 进行实验 看看如果我将指向变量的指针存储在堆栈上 然后在原始变量离开作用域后访问该变量 会发生什么情况 package main import fmt var p chan bool a temp struct type
  • 错误:GDK_BACKEND 与可用显示器不匹配;使用 Crontab 运行 Selenium

    我正在尝试使用 cron 运行 selenium import os from selenium import webdriver from selenium webdriver firefox options import Options
  • 发送 HTML 电子邮件 asp

    我想在电子邮件中添加一些 html 我已经尝试过以下方法 vFromName someone vFromAddress someemail vTo recipient vSubject someSubject vBodyofemail ta
  • Client = Discord.client() TypeError: 'module' 对象不可调用

    为什么我会得到TypeError module object is not callable用我的代码 import discord from discord ext commands import Bot from discord ext
  • Google Cloud Endpoints:verifyToken:签名长度不正确

    今天早上 从我的 Android 应用程序向我的 Google Cloud Endpoint 发出的每个 API 请求都开始出现以下异常 com google api server spi auth GoogleIdTokenUtils v
  • 测量任务之间的响应时间

    我正在编写一个程序 用Python 它返回一些数据 我想知道如何测量请求和答案之间的响应时间 用于性能分析 然后我会将其存储在某个地方 有一种更好更有效的方法来做到这一点 或者只是插入例如time ctime 在请求和另一个请求之前time
  • 使用 TPL 时如何管理线程本地存储 (TLS)?

    我想将日志记录上下文信息存储在 TLS 中 以便可以在入口点设置一个值 并使该值在所有结果堆栈中可用 这工作得很好 但我还使用了 TPL 和 ThreadPool 那么问题就变成了如何将 TLS 数据迁移到其他线程 我可以自己完成这一切 但
  • 如何为具有大图像目录的博客设置 Jekyll,以避免在生成的站点中重复该目录?

    我正在考虑使用 Jekyll 构建一个网站 该网站将成为一个包含大量图像 以及其他大型媒体文件 的博客 创建图像目录 然后根据帖子中的需要链接到它们是很容易的 但是 据我了解 生成站点时 所有图像数据将被复制到保存静态文件的生成的 site
  • 如何在 IntelliJ IDEA 中搜索特定代码块?

    我如何搜索withinIntelliJ IDEA 中的特定代码块或选择 I got used to using this feature in Eclipse In Eclipse you can just double click on
  • 为什么 ViewModelProvider 在屏幕旋转时创建视图模型的新实例?

    我试图实现分页 但每次旋转视图模型的屏幕构造函数都会被调用 从而触发 loadInitial 从我的 DataSource 类中的网络获取新数据 感谢帮助 ViewModel def lifecycle version 2 2 0 impl
  • 有关新 Windows 10 错误的信息:ERROR_CLOUD_FILE_ACCESS_DENIED

    打开文件进行读取时遇到新的 Windows 10 错误代码CreateFile 我们得到错误395 但关于其含义或如何解决的信息很少 Windows 10 SDK的错误详细信息如下 错误编号395 误差常数ERROR CLOUD FILE
  • 获取中位数对应的索引

    我有一个带有一列的 pandas 数据框 我想知道中位数的索引 也就是说 我这样确定中位数 df 中位数 这给了我中值 但我想知道该行的索引 这个可以确定吗 对于长度不均匀的列表 我可以搜索具有该值的索引 但对于均匀的列表长度 这是行不通的
  • JSR303 自定义验证器被调用两次

    我正在使用 Spring MVC 创建一个网站 为了持久性 我使用 Spring Data JPA 和 Hibernate 4 作为我的 JPA 提供程序 目前正在使用 Hibernate Validator 处理验证 我遇到一个问题 我的
  • Javascript 嵌套函数失去作用域

    有人可以解释一下以下代码的范围绑定吗 window name window object name object method function nestedMethod function console log this name nes