了解Cranium.js代码
Understanding Cranium.js code
我在读Cranium.js(https://gist.github.com/addyosmani/3769967)Addy Osmani和我的代码无法理解两行JavaScript的作用。整个代码如下:
// Mix in to any object in order to provide it with custom events.
var Events = Cranium.Events = {
channels: {},
eventNumber: 0,
trigger: function (events, data) {
for (var topic in Cranium.Events.channels){
if (Cranium.Events.channels.hasOwnProperty(topic)) {
if (topic.split("-")[0] == events){
Cranium.Events.channels[topic](data) !== false || delete Cranium.Events.channels[topic];
}
}
}
},
on: function (events, callback) {
Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
},
off: function(topic) {
delete Cranium.Events.channels[topic];
}
};
我不明白的第一句话是:
if (topic.split("-")[0] == events){
Cranium.Events.channels[topic](data) !== false || delete Cranium.Events.channels[topic];
}
那就是:我理解如果,我不明白的是花括号里发生了什么。在我看来(但我可能错了),如果左边的表达式为真,什么都不会发生,否则他会删除Cranium.Events.channels[topic]
。
我不明白的第二句话是:
Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
我不懂双减号。
欢迎发表评论。
if (topic.split("-")[0] == events){
Cranium.Events.channels[topic](data) !== false || delete Cranium.Events.channels[topic];
}
与相同
if (topic.split("-")[0] == events){
if ( Cranium.Events.channels[topic](data) === false ) {
delete Cranium.Events.channels[topic];
}
}
而在Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
中,--
在应用它之前是从Cranium.Events.eventNumber
中减去1。因此,如果之前是3,那么当它被添加到events
时,它将是2。
相关文章:
- Meteor JS中代码的重复使用部分
- 骨干模型默认值-todos.js示例中不必要的代码
- 为什么indexOf在这个js代码中不起作用
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 将JS函数传递给Emscripten生成的代码
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- Node.js:异步代码 + js 闭包的问题
- Chrome 开发者工具 - 控制台.log原生代码 JS
- 为jQuery和KNOCKOUT通用化javascript代码.js成为一个可重用的模块
- .ninnerHtml代码(JS/JQuery)无法识别html表中的动态内容
- 生成唯一的6位代码js
- 我得到了“;赋值中的左侧无效“;在我的代码(JS)中
- 更改代码(JS)中JQuery Mobile Calendar日期的状态
- 如何改进代码JS(Jquery)?一个简单的下拉列表
- 从传输中了解代码.js
- 这段代码(JS)的区别是什么?
- JavaScript倒计时计时器代码[JS]