继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

javascript获取属性的两种方法及区别

慕标琳琳
关注TA
已关注
手记 315
粉丝 18
获赞 140

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

复制代码

var obj={}
obj.x=1console.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]=1arr[2]=2

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

为什么不像

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

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

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

 

原文出处:https://www.cnblogs.com/gzz2018/p/9693384.html  

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP