javascript - 理解 modal.js 中复杂的 $.extend

标签 javascript jquery

我刚刚浏览 modal.js 中的一些代码,发现了以下代码行:

 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)

除了最后一部分之外,该行大部分都有意义,即:

typeof option == 'object' && option

我理解 typeof 运算符,但我不理解它在 $.extend 中的用法,有人可以解释一下吗?

我的难点也可以在网上的插件代码中找到。 Line 296

最佳答案

来自jQuery documentation on $.extend() ,您会看到它与以下参数一起使用:

$.extend( target [, object1 ] [, objectN ] )

在您的代码中:

{} 是目标,即您将在其上构建的新对象。

Modal.DEFAULTS 是一个对象,您可以将属性复制到目标

$this.data() 是另一个从中添加属性的对象。

typeof option == 'object' && option 本质上是说,如果 option 是一个 object,则它的属性将被复制。如果没有,则不会添加任何内容。这是为了避免在未定义时出现错误。

它的缩写相当于:

typeof option == 'object' ? option : false

或者,更长的版本:

(function(){ if(typeof option == 'object') {return option} return false })()

JS Fiddle Demo

让我们走得更远

如果您有多个链接的 &&,例如:

a && b && c

其中abc是已定义的变量,它将检查a不是假的,如果是,则返回 false。否则,它将继续检查b是否为假等等,如果所有3个条件都为真,它将返回最后一个(即c)。在您的代码中,最后一个值是 option

JS Fiddle Demo

Matt在评论中提到,此行为是由于 short circuit evaluation .

关于javascript - 理解 modal.js 中复杂的 $.extend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932250/

相关文章:

javascript - Elasticsearch 显示重复命中

php - 通过ajax进行注册验证和认证

用于检查所有输入或除单选之外的其他类型的 jQuery 选择器

javascript - 通过 JS 将用户发送到新页面

javascript - 谷歌地图在自举 Accordion 中不起作用

javascript - 浏览器检测脚本和if语句

javascript - 在不是用户本地时区的时区中显示日期

javascript - 在原型(prototype)中进行事件绑定(bind)是否明智,为什么它的上下文会丢失?

javascript - 从外部链接调用 JavaScript

JQuery Slideup/Slidedown a div 仅在上一个 div 动画之后或延迟之后