我刚刚在modal.js中查看了一些代码,并遇到了以下代码行:
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
Run Code Online (Sandbox Code Playgroud)
除了最后一部分,这条线最有意义,即:
typeof option == 'object' && option
Run Code Online (Sandbox Code Playgroud)
我理解typeof操作员但我不明白它的用法$.extend,有人可以解释一下吗?
我的难度也可以在网上的插件代码中找到.296行.
从jQuery文档开始$.extend(),您将看到它与以下参数一起使用:
$.extend( target [, object1 ] [, objectN ] )
Run Code Online (Sandbox Code Playgroud)
在你的代码中:
{} 是目标,你将要建立的新对象.
Modal.DEFAULTS是一个对象,您可以从中将属性复制到target.
$this.data() 是另一个将添加属性的对象.
typeof option == 'object' && option本质上是说option如果它是一个属性将被复制object.如果没有,将不会添加任何内容.这是为了避免错误,如果没有定义.
它相当于:
typeof option == 'object' ? option : false
Run Code Online (Sandbox Code Playgroud)
或者,更长的版本:
(function(){ if(typeof option == 'object') {return option} return false })()
Run Code Online (Sandbox Code Playgroud)
让我们走得更远
如果您有多个&&链接,例如:
a && b && c
Run Code Online (Sandbox Code Playgroud)
其中a,b和c被定义的变量,它会检查a是不是falsy,如果是,返回false.否则它将继续检查是否b是假的等等,如果所有3个条件都是真实的,它将返回最后一个(即c).在您的代码中,最后一个值是option.
正如Matt在评论中提到的那样,这种行为是由于短路评估造成的.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |