当我开始做 Web 开发时,我意识到 Javascript 事件名称都是小写的,没有分隔符,即"mousedown"、"mouseup"等。在使用 jQuery UI 库时,我注意到它们也使用相同的约定;即“dropdeactivate”,如下例所示
$( ".selector" ).on( "dropdeactivate", function( event, ui ) {} )
虽然这适用于只有 2 或 3 个单词的名称,但对于包含更多单词的名称来说真的很糟糕。
尽管如此,当我必须触发我创建的自定义(合成)事件时,我也遵循了这个约定,直到最近我决定最好开始使用某种形式的分隔符。现在我使用类似"drop:deactivate"或"app:ready"的东西。
在 iOS 上,苹果最近为 HTML 5 Airplay API 添加了这个事件,我同意这篇文章的作者http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review他说:
我认为“webkitcurrentplaybacktargetiswirelesschanged”赢得了记录:有史以来最长的 JavaScript 事件名称。
这个奇怪的约定背后的原因是什么?为什么不使用任何形式的分隔符或 camelCase 约定以更易读的方式命名事件?
我认为这是有原因的,很多聪明的人都在做这个……但过了一段时间我仍然想知道为什么?