含义 - > if(typeof options ==='string'&& methods [options])

时间:2017-11-25 02:20:31

标签: javascript jquery plugins

有人可以解释表达式

方法[选项]

在此代码中进行评估?

$。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也是一个移交给自定义插件的对象。

由于

1 个答案:

答案 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的字符串或对象值的选项。