js操作对象中点操作和中括号操作的区别

JavaScript010

js操作对象中点操作和中括号操作的区别,第1张

如:

<script type="text/javascript">

  var author = book.author //得到book的"author"属性

  var name = author.subname //得到author的"surname"属性

  var title = book["main title"] //得到book的"main title"属性</script>

区别: 

1.中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。

2.中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 

(即:点号后加标识符(静态的); 

中括号可放字符串,字符串可以是动态的,obj[‘string’+variable])

3.中括号运算符可以用纯数字为属性名。点运算符不能。

4.中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。

不加双引号的话,js会认为这是变量名,而这个变量是不存在的,所以报“not defined”(未定义)的错误。而这其实就是用中括号来访问对象属性的意义所在:可以用变量来代替属性名,比如:var n = "name1"console.log(obj[n]) //obj[n]就相当于obj["name1"]或obj.name1而用点语法的话属性名是不能用变量的!