Javascript 带方括号的函数
Javascript Function With Square Brackets
我通常在 Python 中编程,但今天我试图对一些 Javascript 代码进行逆向工程,我遇到了这一行:
var ABC = DEF[XYZ];
DEF
是之前定义的 function
。它需要一个参数。 XYZ
是之前创建的 string
,它包含之前 运行 DEF
的结果。
我知道的不多JavaScript,但在我看来它正在定义一个名为 ABC
的变量,其中包含 运行 函数 DEF
的结果使用参数 XYZ
。但是,后面有一行 var GHI = ABC(JKL, DEF(MNO))
(JKL
和 MNO
都是之前定义的变量)。
令我困惑的是 ABC
被定义为变量,而不是函数。所以我认为这与之前看到的方括号有关。
所以我的问题是:那些方括号的用途是什么?
what is the purpose of those square brackets?
访问对象的成员。
它不是调用函数。它试图访问对象 DEF
的成员(没有看到其余代码,无法判断 DEF
是什么类型的对象,因为您可以对任何类型使用对象成员加入包含成员的对象,如普通对象、函数、数组等)例如:
var DEF = {
foo: 'bar'
};
var XYZ = 'foo';
var ABC = DEF[XYZ];
console.log(ABC); // => 'bar'
再举个例子,DEF
也可以是一个数组,如果 XYZ
是一个数字,那么它正在访问该数组的特定索引。
更新
如果 DEF
是一个函数,您仍然可以访问它的成员:
function DEF(arg) {
// do something with arg
}
DEF.foo = function(str) {
console.log('I am doing ' + str)
}
var XYZ = 'foo'
console.log(DEF[XYZ]) // => function() {}
var ABC = DEF[XYZ]
ABC('yoga') // => 'I am doing yoga'
你可以这样调用DEF[XYZ](someArgument)
。
我通常在 Python 中编程,但今天我试图对一些 Javascript 代码进行逆向工程,我遇到了这一行:
var ABC = DEF[XYZ];
DEF
是之前定义的 function
。它需要一个参数。 XYZ
是之前创建的 string
,它包含之前 运行 DEF
的结果。
我知道的不多JavaScript,但在我看来它正在定义一个名为 ABC
的变量,其中包含 运行 函数 DEF
的结果使用参数 XYZ
。但是,后面有一行 var GHI = ABC(JKL, DEF(MNO))
(JKL
和 MNO
都是之前定义的变量)。
令我困惑的是 ABC
被定义为变量,而不是函数。所以我认为这与之前看到的方括号有关。
所以我的问题是:那些方括号的用途是什么?
what is the purpose of those square brackets?
访问对象的成员。
它不是调用函数。它试图访问对象 DEF
的成员(没有看到其余代码,无法判断 DEF
是什么类型的对象,因为您可以对任何类型使用对象成员加入包含成员的对象,如普通对象、函数、数组等)例如:
var DEF = {
foo: 'bar'
};
var XYZ = 'foo';
var ABC = DEF[XYZ];
console.log(ABC); // => 'bar'
再举个例子,DEF
也可以是一个数组,如果 XYZ
是一个数字,那么它正在访问该数组的特定索引。
更新
如果 DEF
是一个函数,您仍然可以访问它的成员:
function DEF(arg) {
// do something with arg
}
DEF.foo = function(str) {
console.log('I am doing ' + str)
}
var XYZ = 'foo'
console.log(DEF[XYZ]) // => function() {}
var ABC = DEF[XYZ]
ABC('yoga') // => 'I am doing yoga'
你可以这样调用DEF[XYZ](someArgument)
。