JavaScript中所有变量都可以当作对象使用,除了两个例外null和undefined。今天这里说的对象就特指object类型,也就是其他语言里面的字典dict,接下来讲一下js中对象的定义和使用。
对象赋值:
1)定义并初始化
a = { x : 1 } <--> a = { "x" : 1 } <--> a = {} a["x"] = 1 <--> a = {} a.x = 1
注意: 定义过程中初始化,key直接是字符串,就算你传的是个变量名,还是会认为是字符串。
eg :
t = 1
a = {t : 3} <--> a = ["t" = 3] // 这里a["t"]值为3, a[1] 不存在,为undefined
注意:这里的key如果没有用”“包起来的话,必须为合法字符串
eg :
a = { x : 1 }
b = { a.x : 2 } // 报错,SyntaxError: Unexpected token .,字符串时不合法,含有 .
b = { a["x"] : 2 } // 报错,SyntaxError: Unexpected token [,字符串时不合法,含有[]
这里错的原因主要是,定义初始化过程中key直接当作是字符串,而这里的字符是不合法的
如果key有特殊字符,这时可以用 “”包起来的话
eg:
b = { "a.x" : 2 } // key 为 a.x
2)先定义后赋值
如果key要传变量时,可以在后期赋值的时候传(用[],不用. 用.的话,直接当作字符串)
用 [] 赋值:
eg:
a = {}
x = 1
a[x] = 4 // 这时 a[1] = 4
a[y] // 出错,y未定义
a["z"] = 5 // a["z"]值为5
用 . 赋值:
eg:
a.x = 4 <--> a["x"] = 4 // 注意这里和 a[x] = 4 的不同
读取对象值
用 [] 获取:
eg:
a = {x = 1}
t = "x"
console.log( a["x"] ) // 输出结果 1
console.log( a[t] ) // 输出结果 1
console.log( a[x] ) // 报错,ReferenceError: x is not defined
用 . 获取:
获取的时候,key为数字的时候,用[], 不能直接用 .
eg:
a = {1 : 10}
console.log( a.1 ) // 报错,Unexpected number
console.log( a[1] ) // 输出结果 10
小结:</font>
1.初始化时,key直接当作字符串
2.后期赋值的时候,用[]时key当作正常变量读取, 用.时key直接当作字符串
3.获取对象值得时候,注意key为数字的时候,不要用.要用[]
用处:
有些语言(例如lua)支持在初始化的时候,直接用变量当作key,而js不行。例如之前有个功能用lua实现,后面要改成js实现,但是js在对象初始化的时候就有上面的不同。
上面这些我觉得没必要死记硬背,毕竟只是语言的特性,不过我们得知道其中的不同,具体细节可以通过笔记来巩固。