javascript setTimeout 调用错误

2024-02-26

我想调用window.setTimeot https://developer.mozilla.org/en/DOM/window.setTimeout功能与我的自定义范围,所以我使用call https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call方法,但是有问题。

function foo() {
    this.bar = function() {
        console.log("keep going");
        window.setTimeout.call(this,this.bar,100);
    }
    this.bar();
}

new foo;

在 Firefox 下,这只会向控制台打印 1 行,然后什么也没有,而在 google chrome 下,它会抛出一个TypeError https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/TypeError.

我的代码有什么问题?


Using call在这里没有帮助:它调用setTimeout和你的this对象,但回调函数本身仍然是从全局范围调用的。你真正想做的是这样的:

function foo() {
    var self = this;
    this.bar = function() {
        console.log("keep going");
        window.setTimeout(function() { self.bar(); }, 100);
    }
    this.bar();
}

Edit:如果你真的想要类似的东西call方法,你可以使用bind https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind这绑定了this函数的值:

window.setTimeout(this.bar.bind(this), 100);

然而,这是新的 ECMAScript 5 规范的一部分,尚未得到所有浏览器的支持。

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

javascript setTimeout 调用错误 的相关文章

  • TypeError:req.checkBody 不是包含 bodyparser 和expressvalidator 模块的函数

    我收到错误 req checkBody 不是一个函数 我认为我已经包含了express validator和body parser 这是我的代码 var express require express var bodyParser requ
  • JavaScript 中的“this”如何工作?

    我知道还有其他几篇关于这个主题的帖子 但它们仍然让我感到困惑 我已经包含了 jQuery 和所有内容 我有一个简单的 javascript 类 如下例所示 function CarConstructor this speed 19 in m
  • JS专用鼠标按键

    我的鼠标侧面有两个按钮 其默认行为是 后退 和 前进 我想知道的是是否可以在 JavaScript 中检测这些鼠标按钮的点击 或者这些按钮是否是类似于键盘的 播放 音量调高 和 无线开 关 的 特殊 按钮纽扣 我不知道任何特定的鼠标事件 但
  • 构建基于纯 JavaScript 的 Web 应用程序(客户端和服务器端)是否有意义? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直认为 JavaScript 是任何 Web 应用程序客户端的一个很好的补充 或者更确切地说 在过去几年中 是一个必须具备的功能 即使当我开
  • 如何在 jquery 上并排区分 mouseout/leave 事件?

    有没有办法知道鼠标事件是否已从元素的特定一侧离开 我的意思是 我有一个带有 mouseover mouseenter 事件的 DIV 并且我只想在鼠标离开到元素的左侧时触发该操作DIV 并向右 但如果它从底部或顶部离开 则不应触发任何操作
  • 使用 Javascript 防止刷新“跳转”

    我注意到 如果您在一个页面上并且向下滚动了很多 如果您刷新页面 大多数浏览器会将您跳回到您的位置 有什么办法可以防止这种情况发生吗 我研究了两个选项 但在 Webkit Firefox 上都不一致 window scrollTo 0 1 h
  • 我可以使用 javascript 捕获并保存网页的当前状态吗

    我需要使用 javascript 获取页面的全部内容并将其发送到服务器脚本以保存它 我想在用户使用 AJAX 和其他 javascript 工具对页面进行一些更改后执行此操作 我不想要某些元素的状态 我想基本上获取 body 标记内的所有内
  • 如何使用 Fabric js 以编程方式自由绘制?

    使用 Fabric js 构建多人涂鸦 尝试使用 Fabric js 实现多人涂鸦 想法是当 U1 在画布上绘制时 我们将点推送到 RTDB 并在客户端上获取这些点 并以编程方式在两个客户端中绘制笔画 您可以将画布的数据保存在path cr
  • 解析 Angular2 中的 xml 以在视图中呈现

    我是否需要解析 xml 以从 xml 获取数据以在 html 中呈现 我目前正在使用获取本地 xml 文件http get请求并在控制台日志中显示 xml 文件中的所有信息 我认为它只是在读取它 问题是如何在angular2中将xml转换为
  • 这个作用域/闭包什么时候在 javaScript 中被垃圾回收?

    我正在做一门课程 该课程正在讨论范围 闭包并简要提到垃圾收集 课程中提出一个问题 范围保持多久 答案是 直到 不再有任何提及它 是的 所以我们基本上说的是 是的 闭包有点像对隐藏范围对象的引用 所以只要有一些函数仍然有一个闭包 范围 该范围
  • 将 viewbag 转换为 javascript 数组

    我想将数据从 ViewBag mytags 获取到 Javascript 数组 但我无法执行此操作 function var sampleTags new Array var array Html Raw Json Encode ViewB
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • Vue Chart.js - 数据变化时图表不更新

    我正在使用 Vue js 和 Chart js 绘制一些图表 每次我调用该函数时generateChart 图表不会自动更新 当我在 Vue Devtools 中检查数据时 它们是正确的 但图表没有反映数据 但是 当我调整窗口大小时 图表确
  • 如何将java数组列表转换为javascript数组? [复制]

    这个问题在这里已经有答案了 我们如何将 String 对象的 java arraylist 转换为 javascript 数组 这就是我正在做的事情 但我正在寻找更好的方法来做到这一点 我不想迭代数组列表 var myArray
  • 根据用户投票移动 div

    我是新来的 但我喜欢这个网站 我检查了其他类似的问题 但没有看到我要找的东西 我是一名音乐家 有一段时间我一直在做 每日之歌 每天写一首小歌 我想将歌曲发布为 div 在里面 li 在 div 中 我只想要一个简单的 mp3 播放器和一个
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1
  • Jquery 手风琴默认不折叠

    我正在使用 bootstrap 提供的折叠插件 这是一个 jquery 简单插件 但是它默认折叠 如何修改以使折叠项默认隐藏 只有当我按下标题时 该项目才会折叠并显示 谢谢 插件的文档 只有几行 所以只需要一分钟 http twitter
  • 展平数组中的对象

    大家好 我从响应中获取了一系列对象 我需要将所有学生对象展平为简单的学生姓名 但不确定如何进行 任何帮助将不胜感激 数组示例 students id 123456 name Student Name active true students
  • 如何了解来自不同...“命名空间”的变量?

    如何从外部 javascript 文件中访问在另一个地方声明的某个变量 假设在一个 html 文件中我有以下内容 在 otherfile html 的部分中 我有 alert a 我如何确保收到一条提示消息 某事 我认为Google Ads
  • Javascript - 从 AWS s3 存储桶读取镶木地板数据(使用快速压缩)

    In nodeJS 我正在尝试读取镶木地板文件 压缩 snappy 但没有成功 I used https github com ironSource parquetjs https github com ironSource parquet

随机推荐

  • XPath - 提取两个节点之间的文本

    我的 XPath 查询遇到问题 我必须解析一个 div 它被划分为未知数量的 部分 其中每一个都由 h5 和部分名称分隔 可能的部分标题列表是已知的 并且每个标题只能出现一次 此外 每个部分可以包含一些 br 标签 所以 假设我想提取 Se
  • 尽管在 Windows 的 VS Code 中安装了字体并激活了连字,但仍无法显示 FiraCode

    在我的设置中我有 editor fontLigatures true editor fontFamily Fira Code Comic Sans MS Tahoma Consolas 我已经尝试过 根据this https github
  • 在 IIS7 中重写映射 — 如何使匹配项选择性地包含尾部斜杠?

    我已经阅读了几种组合的前 30 名 Google 搜索结果IIS rewrite map condition等等 但我在 microsoft com 网站或其他地方找不到任何像样的文档 我在 IIS7 中有一堆重写映射 我想处理它们 无论它
  • svn:ignore 的模式匹配字符

    在网上回应一个问题 svn ignore 模式的语法 记录在某处 唯一的图案 我可以在中找到匹配的字符 svn ignore 下的 SVN 书是 颠覆书 svn ignore http svnbook red bean com en 1 0
  • 使用php验证数字签名

    我有一封经过数字签名的电子邮件 email BEGIN PGP SIGNED MESSAGE Hash SHA1 The below email has been digitally signed for test purposes We
  • 从 PostgreSQL 检索原始通知文本

    我正在使用 PL pgSQL 尝试模拟我在 Oracle PL SQL 中可以执行的操作 其中 dbms output 相当于 stdout 我读过 RAISE NOTICE 可能是处理此问题的最佳方法 然而我的问题是 当我从 psycop
  • 可以从自定义模型绑定器访问数据库吗?

    假设我有一个对象 它从 HttpPost 获取一些数据 从数据库获取一些数据 我想我想允许 ModelBinder 访问数据库 存储库以获取帖子中丢失的数据 实际上 这是一个好主意还是坏主意 鉴于自 2010 年初以来我对这类事情的思考已经
  • Swift 5.4 十六进制转 NSColor

    我正在为 macOS 开发一个程序 我需要将十六进制颜色转换为 NSColor 我在这里查看了建议的解决方案 将十六进制颜色代码转换为 NSColor https stackoverflow com questions 8697205 co
  • EPPlus 中的隐藏列不起作用

    我想使用 EPPlus nuget 包隐藏 excel 中的一列 但它不起作用 它没有隐藏该列 这就是我发现应该能解决问题的方法 也许有一个错误 worksheet Column 1 Hidden true 我使用的是4 5 2 1版本 项
  • 以编程方式创建 XPath 表达式

    是否可以从网页上光标的位置自动生成最具体的 XPath 表达式 XPath 表达式将随着 onMouseMove 事件 而改变 如果可以的话 你会如何实施 或者它已经在某些地方实施了Javascript or Python图书馆 我更喜欢它
  • 不带空格的字符串长度 (C#)

    快点小问题 我需要计算字符串的长度 但不包括其中的空格 例如 对于像 I am Bob 这样的字符串 string Length将返回 8 6 个字母 2 个空格 我需要一种方法或其他东西来给我字母的长度 或数量 在 我是鲍勃 的情况下为
  • 文本中的句子注释不带标点符号

    我很难让 CoreNLP 系统正确找到诗歌语料库中一个句子的结束位置和另一个句子的开始位置 其陷入困境的原因 有些诗在整个长度上都没有标点符号 有时甚至没有大小写 有些诗的句子从一个段落延伸到另一个段落 有些诗每行开头都大写 这是一个特别棘
  • 我的 FreeMarker 方法返回一个带有 ${variable} 的字符串——如何强制 FreeMarker 解析它?

    我创建了一个类来实现模板方法模型Ex来自 FreeMarker 假装exec 函数返回一个字符串 你好 用户名 我将该类分配给数据模型中的一个方法 dataModel put myMethod myClassInstance dataMod
  • 如何从浏览器上传文件(附件)?

    我无法上传附件以使浏览器正常工作 一些提示是here http japhr blogspot de 2010 02 how to upload files in couchapp html 其他的there http comments gm
  • ResultSet.TYPE_SCROLL_SENSITIVE 的行为

    我对 a 的行为感到困惑ResultSet这是类型TYPE SCROLL SENSITIVE 我对此的理解是 我执行一个选择查询 返回一个结果集 我打印出第一行中特定列的值 然后我执行Thread sleep 10000 这会使程序暂停 1
  • 在实体框架 6 中保存分离的实体

    我读过很多关于在实体框架中保存分离实体的帖子 所有这些似乎都适用于旧版本的实体框架 它们引用了诸如ApplyCurrentValues和ChangeObjectState之类的方法 但这些方法似乎并不存在 一时兴起 我决定尝试一种通过智能感
  • VS2008到VS2010项目转换

    我有一个在 VS2008 中构建的组件项目 目标是 NET Framework 3 5 我最近下载了 VS2010 Beta 1 以确保在切换到新 IDE 时该项目能够正确转换 该项目包含对几个针对该框架 2 0 版本构建的第三方 dll
  • 使用 URL 时找不到 Webpack 2 模块

    我刚刚更新了我的 Angular 2 项目以使用 Webpack 2 它运行得很好 然而 我在使用时遇到了一个新问题resolve alias key 当我使用 webpack 1 时 这段代码工作得很好 webpack config js
  • 我如何将 C++ 对象传递给具有不同 _ITERATOR_DEBUG_LEVEL 的 DLL

    我的可执行文件调用了许多我自己编写的 DLL 根据这些 DLL 使用的第 3 方 C 库 我无法自由选择所有 DLL 的编译器设置 因此在一些DLL中 ITERATOR DEBUG LEVEL设置为 2 调试版本中的默认值 但在我的可执行文
  • javascript setTimeout 调用错误

    我想调用window setTimeot https developer mozilla org en DOM window setTimeout功能与我的自定义范围 所以我使用call https developer mozilla or