访问对象属性的点表示法和方括号表示法的区别

2018-03-31  本文已影响0人  jasonhsu9

在上文数组对象的比较函数一文中我们使用了如下函数,其中就使用到对象属性的方括号表示法,注意,这里如果换成点表示法,将得不到想要的结果,从而无法实现正确排序。

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;
}

本文结束

上一篇 下一篇

猜你喜欢

热点阅读