Backbone.js 事件处理程序命名的最佳实践

2024-03-14

假设我在视图中有一个函数,当某种状态发生更改时会触发该函数。 最好给它起什么名字,为什么?

  • 状态改变
  • 状态改变
  • 状态改变时
  • 状态改变时

我个人更喜欢使用onEventName名称保持 DOM 事件处理程序的本机命名约定。

Like myElement.onclick = function() { /* ... */ } for click event.

So for myEvent我正在使用一个名为onMyEvent.

如果我有活动stateChange,那么我将使用onStateChange处理程序。

但实际上这个问题对于每个开发团队来说都是更具体的代码风格约定团队/公司内部。

因此,这类问题的主要目标是保持所有部分的代码风格相同,以确保可读性。

因此,如果您在团队中工作,只需遵守团队的代码编写约定,如果您单独处理现有代码,请尝试保持其代码风格(确保该风格不是明显难看)。

更新:理解。

这是什么活动?大致来说,这是在程序外部或内部发起的操作,换句话说,系统中发生了一些事情,例如某些状态更改(键盘、鼠标、I/O 设备等的状态)并不重要(用户单击鼠标或某些程序向系统发送鼠标单击信号)。

假设浏览器窗口订阅了有关某些事件的通知,并且操作系统尽快将它们发送给它,我们将假设在发生某些事件的同时。因此,如果用户在浏览器窗口处于活动状态并且文档具有焦点时单击鼠标,浏览器会告诉文档触发click事件。这里是我们的onclick处理程序开始调用。换句话说,系统告诉我们现在发生了某种状态的改变。我们正在处理这个change并且没有处理告诉我们状态已经改变的事实。

假设我们的处理程序名为onClicked.由于处理程序的名字用过去时态表示,我们可以得到一个合理的问题:“单击时,它发生了多久?单击了多少次?嗯,也许现在处理这个动作(或多个动作?)已经太晚了。” ……”。所以这个名字告诉我们过去某个时候发生过一些事情。

相反,当我们的处理程序被命名时onClick很明显click事件刚刚触发并触发了一次,我们立即收到了通知。我们将会handle the 点击事件- 信息告诉我们鼠标的状态现在发生了变化(not mouse clicked,但是点击事件).

因此,过去时的名称更适合我们需要检查某些状态是否已更改的情况。例如。如果变量存储state = 1我们可以调用该函数isStateChanged();这将比较中的值state变量与当前时刻的实际值。在这里,过去时态是命名的一个不错的选择。

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

Backbone.js 事件处理程序命名的最佳实践 的相关文章

  • 在 JavaScript 中检测页面是否加载到 WKWebView 中

    如何使用 javascript 可靠地检测到页面已加载到 WKWebView 中 我希望能够检测到这些场景 iOS 和 WKWebView iOS 和 Safari not iOS 关于 UIWebView 有一个类似的问题here htt
  • 在 onclick 事件上请求麦克风

    有一天 我偶然发现了这个 Javascript 录音机的例子 http webaudiodemos appspot com AudioRecorder index html http webaudiodemos appspot com Au
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • jQuery UI Datepicker 奇怪的行为

    我在使用 jqueryUI 使用简单的日期选择器时遇到了一个奇怪的问题 我只想显示两个月的日历 包括上个月和当前月份 我使用了这段代码 function picker datepicker numberOfMonths 2 showCurr
  • 需要参数的addEventListener(和removeEventListener)函数

    我需要向 8 个对象 手掌 添加一些侦听器 这些对象是相同的 但行为必须根据它们的位置而改变 我有以下 丑陋的 代码 root palmsStatus B B B B B B B B if root palmsStatus 0 N root
  • 在自动完成上添加 jQuery 延迟

    我正在尝试为应用程序创建 jQuery 自动完成 search input on keyup function search this val autocomplete div autocomplete get ajax search se
  • Chrome 开发工具命中代码但未命中断点

    我在 chrome 开发工具上启用了断点 并且在一行上有一个断点 我知道 chrome 正在运行 因为我将断点放在具有以下语句的行上 alert why is this not breaking 如果我在本地主机中找到该文件 则断点有效 断
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 自调用函数未定义

    如果我声明一个函数文字 var x function alert hi console log x returns the function code However var x function alert hi console log
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 将两个数字相加将它们连接起来而不是计算总和

    我将两个数字相加 但没有得到正确的值 例如 做1 2返回 12 而不是 3 我在这段代码中做错了什么 function myFunction var y document getElementById txt1 value var z do
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • 使用 File API polyfill 读取数据 URL

    我正在尝试使用文件 API 库 https github com mailru FileAPI https github com mailru FileAPI 作为不支持文件 API 的浏览器的后备 以便将文件作为数据 URL 读取并将其传
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直
  • Chrome 调试器注入 javascript

    我有这样的好奇心 是否可以以某种方式在我的页面中注入 javascript 并执行它并调试它 正如您在控制台中所做的那样 但在控制台中您无法暂停并观察变量 是否可以调试我通过控制台输入的代码 为什么无法调试通过 XHR 接收的代码 Than

随机推荐

  • 使用innerHTML在某个div中显示JSON/对象数据

    我创建了以下 JS 代码 加载 HTML 文档时 脚本会正确显示三个位置数据集
  • 启动带有嵌入式 Tomcat 的 Spring Boot 应用程序时如何配置堆大小?

    我正在尝试部署一个春季启动 https projects spring io spring boot 为生产提供支持的 Web 应用程序 该应用程序是使用 Spring Boot 1 0 1 构建的 并嵌入了默认的 Tomcat 7 作为应
  • 如何在调试模式下编译? (netbeans、java、maven)

    我在项目中面临注释 持久性错误 并且持久性库抛出 NullPointerException when trying to resolve the entities org eclipse persistence internal jpa m
  • Galaxy Tab 出现奇怪的性能问题

    我正在编写 2d 教程 并且能够在 Samsung Galaxy Tab 上测试我当前的教程部分 本教程只是在屏幕上随机移动默认图标 通过点击 我创建了一个新的移动图标 只要屏幕上有 25 个或更少的元素 Galaxy 上的一切都可以正常运
  • Linux 上 Objective-C 的 IDE [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在学习 Objective C 我想知道在哪里可以找到 Linux 上 Objective C 的
  • 加载逗号后空格不一致的 CSV 文件

    我想使用加载 CSV 文件LOAD DATA INFILE命令 但逗号后面的空格不一致 即有些逗号后面跟着空格 有些逗号后面没有空格 我尝试使用FIELDS TERMINATED BY 指令 但结果表中的某些字段包含前导空格 如果输入是 a
  • 如何将我自己的存储库分叉到新项目中?

    我正在开发一个 HTML5 游戏引擎 我使用 Git 作为 SV 并使用 GitHub 来实际托管该项目 我在设计上做了一些实质性的改变 主要是切换到实体系统范例 我认为是时候换一个新引擎了 我想将它建立在旧引擎的基础上 因为我可以使用很多
  • Javascript:添加动态方法的更好方法?

    我想知道是否有更好的方法向现有对象添加动态方法 基本上 我试图动态地组装新方法 然后将它们附加到现有函数中 该演示代码有效 builder function fn methods method builder for p in method
  • 加载 JSON 文件时出现内存错误

    当我加载 500Mo 大的 JSON 文件时 Python 和间谍程序 返回 MemoryError 但我的电脑有 32Go RAM 当我尝试加载它时 spyder 显示的 内存 从 15 变为 19 看来我应该有更多的空间 有什么我没想到
  • 将网络抓取的响应保存为 csv 文件

    我从网站下载了一个文件rvest 如何将回复另存为csv file Step 1 猴子补丁rvest像这个线程中的包 如何在 Rvest 包中提交登录表单 不带按钮参数 https stackoverflow com questions 3
  • 如何在silverlight3.0中播放Youtube视频

    我正在开发一个 silverlight 应用程序 我想在其中播放 youtube 视频 任何建议请 可供参考的任何示例或任何链接 提前致谢 这里有一个关于这个问题的有趣主题 其中包含 SL 3 0 beta 中的一些示例 http silv
  • 在简单的 main() 中获取rawinputdata

    我正在尝试使用简单的 C 技术和 Windows 从操纵杆读取值 我的目标是编写一个程序 每当操纵杆信号超过预定义阈值时 该程序就会发送键盘命令 键盘命令将由当时处于活动状态的窗口拾取 我的 C 编码技能有限 因此我希望以最简单的方式完成此
  • 如何将 Tomcat 重写阀添加到 Spring Boot 2.0 应用程序

    我正在尝试在 Spring Boot 应用程序中使用 Tomcat 重写阀 但是无法确定将 rewrite conf 放在哪里才能成功加载 我将 Spring Boot 2 0 3 RELEASE 与 Tomcat 8 5 31 一起使用
  • 以编程方式更改图像分辨率

    我计算过 如果我希望生成的图像为 A4 尺寸 600dpi 用于打印目的 则需要为 7016x4961px 72dpi 所以 我以编程方式生成它 然后在 Photoshop 中测试它 它似乎很好 所以如果我调整它的大小 它会获得正确的大小和
  • 如何让FlatList充满高度?

    import React from react import SafeAreaView KeyboardAvoidingView FlatList View Text TextInput Button StyleSheet from rea
  • 配置 grunt 复制任务以排除文件/文件夹

    我已经安装了 grunt 任务grunt contrib copy 我把它嵌入到我的Gruntfile js并通过加载任务grunt loadNpmTasks grunt contrib copy 目前 我使用以下配置来创建一个包含 js
  • 类在需要新实例的地方保留以前的内容

    我定义了一个类 以及一个创建该类实例的函数 我认为这个函数应该每次都创建一个新实例 然而 它看起来像是 继承 了上次调用的内容 任何人都可以解释一下吗 谢谢 class test a def b self x self a append x
  • iframe shimming 或 ie6(及更低版本)选择 z-index 错误

    嗯 不知道有没有人遇到过这个问题简要说明是关于 IE6 的任何
  • constexpr 和奇怪的错误

    我有 constexpr bool is concurrency selected const return ConcurrentGBx gt isChecked GBx is a groupbox with checkbox 我收到错误
  • Backbone.js 事件处理程序命名的最佳实践

    假设我在视图中有一个函数 当某种状态发生更改时会触发该函数 最好给它起什么名字 为什么 状态改变 状态改变 状态改变时 状态改变时 我个人更喜欢使用onEventName名称保持 DOM 事件处理程序的本机命名约定 Like myEleme