js 对象中的中括号与点在调用对象属性时的区别

1.0

javascript访问对象属性有两种方法,第一是点符号法,第二是方括号表示法,括号之间的值可以是任何表达式。因此,如果属性名称存储在变量中,则可以使用括号表示法。

在javascript中,我们使用以下两种方法访问对象属性:

点符号 - foo.bar
方括号 - foo[someVar]或foo[“string”]
但只有第二种情况允许动态访问属性:

var foo = { pName1 : 1, pName2 : [1, {foo : bar }, 3] , ...}
 
var name = "pName"
var num  = 1;
 
foo[name + num]; // 1
 
// -- 
 
var a = 2;
var b = 1;
var c = "foo";
 
foo[name + a][b][c]; // bar

因此, 要使用变量动态访问对象属性,可以使用第二种方法“方括号法”,如下所示:

let foo = {
    bar: 'Hello World'
};
 
let prop = 'bar';
 
foo[prop];

2.0

为了减少代码量,有时需要用变量名充当对象的属性,方便调用。

作为对象属性时,有两种方式存取。一是点号(.)运算符,一是中括号([])运算符

var p = {name:"Jack"}; 
alert(p.name);//点号 
alert(p['name']);//中括号

1、点号要求后面的运算元是合法的标识符(即合法的变量命名),对于不合法的不可以使用

2、中括号要求的则是一个字符串即可,不必是合法的变量命名。如4p是不合法的变量命名(因为以数字开头),但却可以作为对象属性名(前提是字符串)

var p = { 
     "4p":"Jack", 
     "-3":"hello", 
      name:"Tom", 
      "我":"me", 
      "我 们":"we"
        }; 
 
 alert(p.4p);//不合法,语法分析时报错,不能以数字开头
 
 alert(p.我);//合法,输出"me" 
 
 alert(p.我 们);//不合法,语法分析时报错("我"和"们"之间有个空格) 
 
 alert(p["我 们"]);//合法,输出"we",虽然"我"和"们"之间有空格,仍然可以用[]存取 
 
 alert(p['4p']);//合法,输出"Jack" alert(p.name);//合法,输出"Tom"
 

转自 https://blog.csdn.net/qq_42209411/article/details/82983354

猜你喜欢

转载自blog.csdn.net/m0_37885651/article/details/85257958