gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:28:52 24 4
gpt4 key购买 nike

我刚刚浏览 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com