绑定这个更好还是使用变量更好? [关闭]

2024-04-10

是不是更好做,

asset.addEventListener("load", function () {
  this.emit({
    type: "load",
    asset: asset
  });
}.bind(this), false);

Or

var scope = this;

asset.addEventListener("load", function () {
  scope.emit({
    type: "load",
    asset: asset
  });
}, false);

绑定函数更好,还是只存储对函数的引用this在变量中?


这实际上取决于很多因素。以下是一些注意事项:

  • 从历史上看,函数创建自.bind()已经变慢了。

  • 界限this不能改变它的值,而变量可以。 (我猜你希望它不会在这里改变。)

  • 您将丢失元素引用,尽管您仍然可以通过event.currentTarget.


另一种可以考虑的选择是让你的对象实现事件监听器界面。这将让您将对象本身作为处理程序传递,并将调用您的实现handleEvent()您提供的方法。

然后thisvalue 将自动成为您的对象。

所以如果你的this是一个来自构造函数的对象,你可以这样做:

function MyCtor() {
    // your constructor
}

// This implements the `Event Listener` interface
MyCtor.prototype.handleEvent = function(event) {
          // ------v----should be "load"
    return this[event.type](event)
};

// This is the `load` handler
MyCtor.prototype.load = function(event) {
    this.emit({
      type: "load",
      asset: event.currentTarget
    });
};

然后像这样绑定处理程序:

asset.addEventListener("load", this, false);

现在你的价值this句柄事件中将是您的对象,因此您可以调用它的其他方法,并且两者都不是.bind也不需要闭包变量。

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

绑定这个更好还是使用变量更好? [关闭] 的相关文章

随机推荐

  • 在 Objective-C 中存储和检索数字对的快速方法

    我正在实现排队洪水填充算法 需要存储和检索数字对NSMutableArray 基本上 我正在创建一个数组 m queue NSMutableArray array 然后有时我填充数组 m queue addObject NSValue va
  • 下载时出错

    下载控制台会返回以下错误 帧加载因策略更改而中断 Example a href app exe Start Download a Console Preview 我应该在中配置一些东西吗Compiler or QWeb设置 我发现了 在传统
  • 无法使用 Windows 10 移动技术预览版将通用应用程序部署到手机

    我已解锁开发者卢米亚 635昨天刚刚更新为Windows 10 移动版技术预览版 http windows microsoft com en us windows preview download phone 操作系统版本 10 0 125
  • Perl 构造函数应该返回 undef 或“无效”对象吗?

    Question 什么被认为是 最佳实践 and why 处理构造函数中的错误 最佳实践 可以引用 Schwartz 的话 或者 50 的 CPAN 模块使用它 等等 但我对任何人提出的合理意见感到满意 即使它解释了为什么常见的最佳实践并不
  • 无法在 Primefaces RequestContext.execute() 调用中显示对话框

    我有一个选项卡视图 只要用户选择该选项卡 我就想在其中刷新该选项卡的内容 我还希望在刷新选项卡时弹出模式对话框 这是带有 tabChange ajax 事件处理程序的 tabView
  • 日语/字符的编程技巧[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 可以编写一些网络应用程序来帮助我 也许还有其他人 更好地学习日语 因为我正在学习日语 我的问题是该网站主要是英文的 所以
  • 从 for 循环 Python 将数字列表打印为数组

    使用下面的代码 它会一一打印值 phase 我正在尝试将这些值打印为 for 循环之外的数组 import math Period 6 2 time1 datafile1 0 magnitude1 datafile1 1 for i in
  • Swift REPL:如何保存/加载 REPL 状态? (又名挂起/恢复、快照、克隆)

    在 Swift REPL 中 保存 REPL 状态的方法是什么 例如 我想在 REPL 中做一堆工作 然后保存它 以便稍后加载 这个概念可能被命名为保存 加载 挂起 恢复 快照 克隆 序列化 反序列化等 任何让我实现这一目标的解决方案都会有
  • python中的单词排序

    在Python中是否可以不根据英语字母表而是根据自己创建的字母表对单词列表进行排序 您通常可以定义自定义比较方法 以便在您的限制范围内执行排序 我一生中从未编写过一行 Python 代码 但它与 Ruby 非常相似 让我注意到以下摘录自这一
  • gluUnProject Android OpenGL ES 1.1 用法

    我正在尝试使用 gluUnProject 将 Windows 坐标转换为世界坐标 我不想在模拟器或旧版 Android 系统 使用 OpenGL ES v1 0 中获取工作示例 这不是关于 GL 函数可用性的问题 我正在尝试使用 OpenG
  • 逻辑或运算符与按位或运算符

    有谁知道为什么 if false true true System out println True else System out println False Print True if false true true System ou
  • 如何在 Rails 中发送简单的 json 响应?

    我需要发送 json 响应取决于用户在输入中输入的数据 但我无法发送简单的 json 请求 我关注了这篇文章 http paydrotalks com posts 45 standard json response for rails an
  • MSI 安装程序自定义操作身份问题

    我正在创建一个在数据库上执行脚本的自定义操作 问题是 connectios 使用集成安全性 因此当我尝试打开连接时出现错误 用户 Domain ComputerName 登录失败 当我检查自定义操作的身份时 使用System Securit
  • CSS属性在github中以红色突出显示

    The touch actionSCSS 文件中的属性在 Github diff 中以红色突出显示 有什么理由吗 这是它的 DOM 如果存在语法错误 Github 会突出显示这样的代码 它不是 100 准确 而且它实际上并没有运行您的代码
  • Meteor-AutoForm:如何根据另一个控件更新选择选项

    我一直在寻找一些问题的答案 这些问题应该非常简单 但我一生都无法弄清楚 基本上我有一个带有两个选择控件的meteor autoform
  • 在 Windows 7 上找不到模块“连接”

    请看下面 C Program Files nodejs gt npm g install connect npm http GET https registry npmjs org connect npm http GET https re
  • React Native + React Native Paper 应用程序中未显示图标

    这是一个新鲜的React Native应用程序使用React Native Paper 我按照以下说明进行操作https callstack github io react native paper getting started html
  • 无法实现 grunt-connect-proxy

    为了 http 127 0 0 1 9000 我得到的路线 不能获取 对于 v1 路线我得到 未找到 在此服务器上找不到请求的 URL v1 这是我的 Gruntfile js Generated on 2013 10 08 using g
  • 计算小于当前值的值的数量

    我想计算列中的行数input如果值小于当前行 请参阅下面想要的结果 对我来说 问题是条件基于当前行值 因此它与条件是固定数字的一般情况有很大不同 data lt data frame input c 1 1 1 1 2 2 3 5 5 5
  • 绑定这个更好还是使用变量更好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi