对不起,标题不好,但是我想不出更好的办法。
我在必须维护的旧项目中找到了以下代码行。但是,我完全不知道它的作用或工作原理。
$('.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');
}
因为我知道我以前从未见过这种事。
答案 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
只是将属性名称替换为其值。