Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个符号是做什么的?_Javascript_Jquery - Fatal编程技术网

Javascript 这个符号是做什么的?

Javascript 这个符号是做什么的?,javascript,jquery,Javascript,Jquery,很抱歉标题不好,但我想不出更好的了 我在我必须维护的遗留项目中发现了以下代码行。然而,我完全不知道这是什么,也不知道它是如何工作的 $('.js-legend-input')[operation]('chapter__inputs--hidden'); 变量操作定义如下: const operation = active === 'chapter' ? 'addClass' : 'removeClass'; 我只能怀疑这一行在.js legend input上执行函数addClass和rem

很抱歉标题不好,但我想不出更好的了

我在我必须维护的遗留项目中发现了以下代码行。然而,我完全不知道这是什么,也不知道它是如何工作的

$('.js-legend-input')[operation]('chapter__inputs--hidden');
变量
操作
定义如下:

const operation = active === 'chapter' ? 'addClass' : 'removeClass';
我只能怀疑这一行在
.js legend input
上执行函数
addClass
removeClass
,并使用括号中的参数。那么,这个符号只是一个“速记”吗


因为我非常清楚我以前从未见过这种情况。

是的,你是对的,这个符号[operation]被称为括号符号,它与点符号一起用于访问对象属性(只是有.后跟属性名)。括号表示法允许使用变量作为属性名,这就是为什么在本场景中使用括号表示法。变量
操作
只是将属性的名称替换为其值。

您完全正确。这正是它所做的,另外:

  • 若参数值发生变化,那个么您只需要更新遗留代码中的一行,而不是在Ifs的情况下更新两行

    $('.js-legend-input')[ operation ]( 'chapter__inputs--hidden' ) ;
    
  • 如果一个新的操作是可能的,例如
    toggleClass
    ,那么您不必再添加另一个如果,您可以使用变量
    operation='toggleClass'
    调用它。整洁,对吗


[操作=='active'?'addClass':'removeClass']
只是动态调用
$('.js图例输入')
的属性。这是另一种表示“是”的方式,您的假设是正确的,这就是它所做的。请记住
$('.js图例输入')
返回一个对象,您可以使用括号符号访问类似数组的对象是的,这正是它所做的。如果您的键存储在变量中,则必须使用括号符号来使用它。将
(…)
放在任何计算结果为函数的后面都会调用它。过去的开发人员试图变得聪明,并使代码对未来的开发人员可读性降低的主要示例。非常感谢您确认我的理论!它实际上相当整洁,但我可能需要对此发表评论,因为我不知道那是什么。如果添加了新的操作,那么xDIt是整洁的。JS是狂野的西部,你可以用它做很多事情,它是我最喜欢的编程语言之一。:)
$('.js-legend-input')[ operation ]( 'chapter__inputs--hidden' ) ;