対象中.操作符と[]操作子の違い


何ですか
操作符は「属性アクセス」と呼ばれ、[]は「キーアクセス」と呼ばれ、両者は通常互換可能です.
例:
var obj={
        a:2
    };
    obj.a;//2
    obj['a']; //2
 
操作子は属性名が識別子の明らかなルールを満たす必要がありますが、[]文法は任意のUTF-8/Unicode文字列を属性名として受け入れることができます.    プロパティ名がハローワールドの場合は[]を使用しなければなりません. オブジェクトで属性名を解析するときは、実際に文字列です.上のオブジェクト属性など、正しい解析方法は以下の通りです.    
 
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]