在上文数组对象的比较函数一文中我们使用了如下函数,其中就使用到对象属性的方括号表示法,注意,这里如果换成点表示法,将得不到想要的结果,从而无法实现正确排序。
function compareFunction(propertyName) {
return function(object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
//需要注意的是 上面两行代码 必须用方括号访问对象,只能方括号表示法才能访问变量。
if(value1 < value2) { return -1; }
else if(value1 > value2) { return 1; }
else { return 0 }
}
}
首先我们在Chrome Developer tools中创建如下对象
let person = {
name:'Greg'
}
JavaScript中一共有两种方法访问对象属性
- 点表示法
- 方括号表示法
person["name"]; //在使用方括号语法时,应该把属性名以字符串的形式放在方括中
person.name; //Greg
从功能上说,这两种方法没有任何区别。但方括号语法有一个优点:可以通过变量来访问属性,正如正文开头的compareFunction()函数一样
var propertyName = 'name';
person[propertyName]; //Greg
还有!如果属性名中包含 使用点表示法 会导致语法错误的字符,或者属性名是关键字或者保留字,也可以使用方括号表示法。如:
person['first name'] ='Greg'; //first name包含一个空格
但是!!我们建议使用点表示法,除非必须使用变量来访问属性。
[]方括号访问的属性名时,可以在程序运行时创建和修改属性,点操作符就不行!
eg1:
var addr="";
for(i=0;i<4;i++){
addr += customer["address"+i]+'\n';
}
eg2:
function addStock(portfolio,stockname,shares){
portfolio[stockname]=shares;
}
本文结束