JavaScript点表示法(Dot notation)与方括号表示法(Bracket Notation)差异问题咨询
JavaScript对象属性访问问题解答
首先明确JavaScript中对象两种属性访问方式的核心差异:
- 点表示法:后面跟随的是固定的字面量属性名,不会解析变量,直接把后面的字符串作为属性名处理
- 方括号表示法:括号内会先执行表达式求值,把求值得到的结果作为属性名处理
问题1解答
你写的me.selection = 40用的是点表示法,这行代码的作用是:给me对象新增一个名为selection的属性,赋值为40,和你之前定义的变量selection没有任何关联。
此时:
me[selection]中的方括号会先对selection变量求值,得到字符串'age',实际访问的是me.age,初始赋值是37,所以第一次打印输出37me.selection用点表示法直接访问你新增的selection属性,值是40,所以第二次打印输出40
问题2解答
改成me[selection] = 40后,方括号先对selection变量求值得到'age',这行代码的作用变为:修改me对象原有age属性的值,从37更新为40。
此时你没有给me对象添加过名为selection的属性:
me[selection]还是等价于访问me.age,值已经被修改为40,所以第一次打印输出40me.selection访问的是不存在的selection属性,JavaScript中访问对象不存在的属性默认返回undefined,所以第二次打印输出undefined
内容的提问来源于stack exchange,提问作者Nguyễn Minh Triết
相关产品推荐
相关产品推荐

