在JavaScript中,我们通常使用
.
运算符来访问对象的属性和方法,而使用[]
一般是用来访问对象属性的变体形式,即可以动态的根据字符串的值来获取属性。在这个例子中,this[
fileList${event.name}]
实际上是等价于this.fileListfoobar
的,其中foobar
是一个动态拼接出来的字符串。这种方式可以方便地根据不同的变量值获取相应的属性,因此被广泛地应用。最终,我们通过.length
方法获取该数组的长度,并将其赋值给变量fileListLen
当我们使用.
运算符访问对象属性时,属性名必须是一个字面量,也就是一个具体的、固定的字符串。例如,假设有一个包含name
和age
属性的对象,要获取name
属性,可以写成obj.name
。这里的name
就是一个字面量。
但有时候,我们需要根据某些条件来动态地获取对象的属性,此时就不能使用.
运算符,而要使用另一种形式:[]
,将属性名括在方括号内作为变量或表达式。例如:
const propertyName = 'age';
const person = {
name: 'John',
age: 30,
};
console.log(person[propertyName]); // 输出 30
上面的代码中,propertyName
是一个变量,它的值是字符串'age'
。我们使用[]
取代了.
,并将propertyName
作为属性名传递给了对象person
。这样就能够根据变量的值来动态地获取对象的属性。
因此,我们可以说通过[]
形式访问对象属性是一种变体形式,它比常规的.
运算符更加灵活,能够让我们根据不同的情况来获取对象的属性。