对象中 . 操作符与[ ]操作符的异同

是什么

.操作符被称为“属性访问”,[ ]被称为“键访问”,两者一般可以进行互换

实例:

var obj={
        a:2
    };
    obj.a;//2
    obj['a']; //2

 

主要区别:.操作符要求属性名必须满足标识符的明明规则,而[]语法可以接受任意UTF-8/Unicode字符串作为属性名,比如:
    如果属性名为hello-world,必须使用[],
注意:
对象中解析属性名的时候实际上是字符串,比如上面这个对象属性,其正确的解析方式如下
    

 

var obj={
        "a":2
    }

如果对象中用到了可计算属性名,则必须使用[]方法
  

var who="ni";
    var obj={
        [who+"wo"]:"hello"
    }
    obj["niwo"];
    console.log(obj["niwo"]);

数组也是一种对象,同时支持两个操作符的调用,但是如果属性的值为变量,必须使用
    

var arr=[];
    for(var i=0;i<10;i++){
        arr.push(i);
        console.log(arr[i]); //1,2,3...
        console.log(arr.i);  //undefined
    }

--------------------------------------------------------我的分割线,20180706更新------------------------------------

关于对象调用的两个面试题:

//  面试一:对象
  var a = {};
  var obj1 = {n:2};
  var obj2 = {n:3};
  a[obj1]=4;   //调用to.String()方法
  console.log(a[obj1]);  //4
  a[obj2]=5;
  console.log(a[obj1]); //5
  console.log(a);  //{[object Object]: 5}

//面试二:数组

  var b=[];
  var arr1=[1,2,3];
  var arr2=[2,3,4];
  b[arr1]=6;   //调用to.String()方法  b['1 2 3'] = 6
  b[arr2]=8;   //调用to.String()方法  b['2 3 4'] = 8
  console.log(b[arr1]);  //6
  console.log(b[arr2]);  //8
  console.log(b);  //[1,2,3: 6, 2,3,4: 8]

 

你可能感兴趣的:(JavaScript,JavaScript高级)