javascript获取属性有两种方式,点或者中括号:

var obj={}
obj.x=1
console.log(obj.x)//1 第一种方式,x是字面量
try{
console.log(obj[x])//ReferenceError: x is not defined 相当于调用obj."undefined"
}catch(e){
console.log("err:"+e)
}
x="str"
console.log(obj[x])
x="x"
console.log(obj[x])//x是一个变量,先计算出值并转换为字符串,在获取相应的属性名

当你用第一种方式的时候,属性必须是一个合法的变量名,如果属性名字是 2 或者 “john smith”就行不通了,这时你只能用中括号 obj[2]或者obj["john smith"].所以你会联想的数组,有人说javascript里面甚至没有数组,只有属性,因为你可以这样定义:

arr=[]
arr[0]=1
arr[2]=2

中间跳过了arr[1],如果你要取arr[1]也可以,只是会得到undefined

为什么不像

console.log(obj[x])//ReferenceError: x is not defined 相当于调用obj."undefined"  

这样抛异常呢,因为1不是undefined,是字面量

中括号还有个好处,就是属性的名字可以动态的计算,比如用循环语句去遍历一个对象的属性

最新文章

  1. 彻底解决“从客户端中检测到有潜在危险的Request.Form值”
  2. mount --bind 重启后失效的解决办法
  3. Java设计模式-状态模式(State)
  4. Fiddler-001-抓包工具初识
  5. tcp socket
  6. UIKit,Core Data , Core Graphics, Core Animation,和OpenGLES框架
  7. C# 获取汉字的拼音首字母
  8. atomic_compare_exchange
  9. 201521123053《Java设计与程序》第六周学习总结
  10. ES6-模块化
  11. 判断mine类型
  12. 阿里云API网关(18)请求报文和响应报文
  13. WebApiClient与Asp.net core DI的结合
  14. UI Automator 常用 API 整理
  15. ShellExecute, WinExec与CreateProcess
  16. sdk manager更改国内镜像
  17. python day10 函数(第二篇)
  18. 1; XHTML 基本知识
  19. 【2017-03-23】CSS基础:内联样式
  20. 如何为Android上的产品设计一款合适的图标

热门文章

  1. NOIp2016 愤怒的小鸟 【状压dp】By cellur925
  2. kuangbin大佬的高斯消元模板
  3. 微信开发(一)URL配置
  4. [筆記]catalan卡特蘭數
  5. Zynq7000开发系列-2(VMware与Ubuntu安装使用)
  6. GYM 101889B(找规律)
  7. 洛谷 P1042 乒乓球
  8. (转)Unity中使用C#实现Zip包的压缩与解压
  9. AJPFX关于线程创建的方式
  10. wine使用