有人可以解释表达式
方法[选项]
在此代码中进行评估?
$。fn [pluginname] = function(options){
if (typeof options === 'string' **&& methods[options])** {
alert("Mirko in");
var inited = TRUE;
this.each(function() {
if (!$(this).data(pluginname)) {
return inited = FALSE;
}
});
这个表达什么时候是真的?我在javascript中认为你没有关联数组。
有关信息: - 方法只是一种对象类型( - > var methods = {method1:function()...,method2:function()...} - options也是一个移交给自定义插件的对象。
由于
答案 0 :(得分:0)
methods[options]
访问与一个键相关联的方法对象中的值,该键等于options
变量的字符串值。如果存储了truthy值,它将返回true。如,
var methods = {yes: 'hello'}
var options = 'yes'
(typeof options === 'string' && methods[options]) //evaluates as true
options = 'no'
(typeof options === 'string' && methods[options]) //evaluates as false
第二个评估为false,因为methods['no']
返回undefined
。但是,在您的问题中,您说options
是一个对象 - 如果它始终为真,则布尔值typeof options === 'string'
的前半部分将始终为false并导致整个表达式为false。我想这个插件提供了传递options
的字符串或对象值的选项。