这个符号是做什么的?

时间:2018-09-27 15:08:59

标签: javascript jquery

对不起,标题不好,但是我想不出更好的办法。

我在必须维护的旧项目中找到了以下代码行。但是,我完全不知道它的作用或工作原理。

$('.js-legend-input')[operation]('chapter__inputs--hidden');

变量operation定义如下:

const operation = active === 'chapter' ? 'addClass' : 'removeClass';

我只能怀疑这行在addClass上执行了函数removeClass.js-legend-input并使用括号中的参数。那么,该表示法仅仅是“简写”吗?

if(active === 'chapter') {
    $('.js-legend-input').addClass('chapter__inputs--hidden');
} else {
    $('.js-legend-input').removeClass('chapter__inputs--hidden');
}

因为我知道我以前从未见过这种事。

2 个答案:

答案 0 :(得分:2)

您绝对正确。正是它的作用,再加上:

  • 如果参数值发生更改,则只需更新旧版代码中的这一行,如果 if s

    ,则只需更新两行
    vars <- c(paste0("var",1:10))
    res = setnames(setDT(rep(list(numeric()), length(vars))), vars)
    
  • 如果可以进行新操作,例如$('.js-legend-input')[ operation ]( 'chapter__inputs--hidden' ) ; ,则不必添加另一个 if ,只需使用变量{{1} }。整洁吧?

答案 1 :(得分:1)

是的,这个符号 [operation] 被称为括号符号,它用于与点符号一起访问对象属性。 >(仅带有。,后跟属性名称)。方括号表示法允许将变量用作属性名,这就是在这种情况下使用它的原因。变量 operation 只是将属性名称替换为其值。