理解模态.js中复杂的 $.extend
Understanding complex $.extend in modal.js
我只是在模态中浏览一些代码.js并遇到了以下代码行:
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
这条线大部分是有意义的,除了最后一部分,即:
typeof option == 'object' && option
我了解typeof
运算符,但我不了解它在$.extend
中的用法,有人可以解释一下吗?
我的困难线也可以在在线插件代码中找到。296路。
从 $.extend()
上的 jQuery 文档中,您将看到它与以下参数一起使用:
$.extend( target [, object1 ] [, objectN ] )
在您的代码中:
{}
是目标,是您将基于其构建的新对象。
Modal.DEFAULTS
是一个对象,您将从中将属性复制到target
。
$this.data()
是将从中添加属性的另一个对象。
typeof option == 'object' && option
本质上是说,如果option
是object
,它的属性将被复制。否则,不会添加任何内容。这是为了避免在未定义时出现错误。
它更短的等价物:
typeof option == 'object' ? option : false
或者,更长的版本:
(function(){ if(typeof option == 'object') {return option} return false })()
JS小提琴演示
让我们走得更远
如果您有多个&&
链接,例如:
a && b && c
其中 a
、 b
和 c
是定义的变量,它将检查a
是否是假的,如果是,则返回 false。否则,它将继续检查b
是否是假的等等,如果所有 3 个条件都是真实的,它将返回最后一个(即 c
)。在代码中,最后一个值是 option
。
JS小提琴演示
正如Matt在评论中提到的,这种行为是由于短路评估造成的。
相关文章:
- 在Redux中,我应该在哪里编写复杂的异步流
- 将复杂对象从angular js传递到web api,它总是返回404
- dropdown.js中的复杂事件处理
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 相当复杂的Regex
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 加速我的复杂函数绘图仪(canvas+javascript)
- JQuery Mobile Javascript复杂方程式
- 如何覆盖主干中的extend方法
- 如何使用javascript过滤复杂的json对象
- 复杂量角器选择器
- 如何在使用Ractive.extend()时引用DOM元素
- JavaScript中的复杂字符串匹配
- 有关PouchDB的复杂startkey/endkey查询未返回预期结果
- 复杂的javascript函数,我该如何使用它
- TinyMCE:添加复杂格式
- 如何使用原型继承编写一个整洁灵活的复杂javascript应用程序
- 使用复杂数组时Jquery自动完成功能不起作用
- 解析复杂的json-jquery
- 理解模态.js中复杂的 $.extend