Addy Osmanis pub/sub,难以理解代码
Addy Osmanis pub/sub, trouble understanding the code
我正在使用Addy Osmani的pub sub方法:
var topics = {};
jQuery.Topic = function( id ) {
var callbacks,
topic = id && topics[ id ];
if ( !topic ) {
callbacks = jQuery.Callbacks();
topic = {
publish: callbacks.fire,
subscribe: callbacks.add,
unsubscribe: callbacks.remove
};
if ( id ) {
topics[ id ] = topic;
}
}
return topic;
};
但在我将其添加到我的项目中之前,我想更好地理解它。 它相当简单,除了一行我从未见过:topic = id && topics[ id ];
topic = id
还行。 &&&运算符在这里做什么? 它是否将 ID 添加到主题数组?还是进行比较?
topic = id && topics[ id ];
应读作
topic = (id && topics[ id ]);
&&
具有更高的优先级,如 MDN 文档中所述
当id
被评估为"true"值时,分配给topic
的值是topic[id]
的,否则false
:所以这是一个更短的方法
if (id) {
topic = topics[id];
}
else {
topic = false;
}
以上是 jQuery.Callbacks() 的 jQuery 文档页面上的 Pub/Sub 示例。https://api.jquery.com/jQuery.Callbacks/
我已经写了这个例子的摘要,对我来说,这并不明显。
Topic() 是一个函数,它返回一个包含三个重命名函数对象的主题对象:callbacks.fire, callbacks.add, callbacks.remove.
主题对象包含三个函数对象,重命名为发布、订阅、取消订阅
id 是指标识 pubSub 通道的唯一字符串:例如:"mailArrived"、"mailSent"
主题对象(复数)包含主题对象,由 ID 键控。它用于确定是否存在具有该 id 的主题对象。
Topic() 检查 id 是否不为 false(undefined、null、NaN、0、" 或 false)。
如果 id 为 true,并且主题中存在该 id 的主题,然后主题对象被分配主题[id]并返回。
如果 id 为 true,并且主题中不存在该 id 的主题,然后创建一个新的主题对象,作为主题[id]放置在主题中并返回。
如果 id 为 false,则创建并返回一个新的主题对象,但不放入主题中。
每次创建主题对象时,都会在新 jQuery 回调列表的唯一值上创建一个闭包。
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 将 jQuery 代码添加到 Index.aspx 页面
- 为什么忽略了eval()代码中的语法错误
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Addy Osmanis pub/sub,难以理解代码