Addy Osmani によるCranium.js ( https://gist.github.com/addyosmani/3769967 ) コードを読んでいましたが、2 行の 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];
}
つまり、中括弧内で何が起こっているのかがわかりません。左の式が true の場合は何も起こらず、そうでない場合はCranium.Events.channels[topic]
.
私が理解していない2行目は次のとおりです。
Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
二重マイナス記号がわかりません。
どんなコメントでも大歓迎です。