js操作对象属性用点和用中括号有什么不同?

天崩地裂金刚不坏 2016-06-06 04:21:16
js操作对象属性用点和用中括号有什么不同?

Javascript
比如:
var a = {};
有时候要用:
a.b = 1;
c = a.b;
alert(c);
可是有时候却要用:
a[b] = 1;
c = a[b];
alert(c);
这两种写法有什么区别吗
那为什么有时候只有前者能用或是后者能用?
...全文
1991 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35724660 2016-08-02
  • 打赏
  • 举报
回复
这个在上面加注释的地方,那个name只能用括号,在下面不加引号的地方则随意 上面的那个在for in循环中 变成了变量, 下面的则是属性 你就记住:属性就用点,变量就用括号
qq_35724660 2016-08-02
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style> div{ width:200px; height:200px; background: gray; } </style> <script> // var json={a:1,b:2,c:3,d:4}; // // alert(json.a); // // alert(json['a']); //两种的访问方法,json就是给变量打包, // // for in循环是循环的对象,所以也能循环数组,性能略低,约定俗成,能用for循环的尽量用, // for(var name in json) // {} // alert(json['b']); // var json={name:'小明',sex:'男',age:'16',job:'学生',sisters:{ // elderSister:{ // name:'大花', // age:26, // }, // youngSister:{ // } // }} // }; window.onload=function() { // var oDiv=document.getElementsByTagName('div')[0]; // oDiv.onclick=function() // { // setStyle(oDiv,{ // width:'400px', // height:'400px', // background:'red' // }); // }; // function setStyle(oDiv,json) // { // for(var name in json) // { // oDiv.style[name]=json[name]; // } // } function show(a) { alert(arguments[2].a+arguments[2].b); } var json={a:1,b:2,c:3} show(12,5,json); }; </script> </head> <body> <div></div> </body> </html>
  • 打赏
  • 举报
回复
haode,xiexei
zxj225 2016-06-06
  • 打赏
  • 举报
回复
引用
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。
当老师的么...
cocotsau 2016-06-06
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。
解释的很完整,顶!d=====( ̄▽ ̄*)b!
cocotsau 2016-06-06
  • 打赏
  • 举报
回复

/**
  * 在JavaScript里面 . 可以理解成 的
  * 下面的例子中,a.b表示对象a的属性b,既可以设置也可以读取
  * object[key]=>key为常量时,object[key]等价于object.key,例如:a.b == a['b']
  * 特殊的,object[key]=>key为变量时,只能用中括号形式
  */
var a = {};
// a.b = 1;
a['b'] = 1;
c = a.b;
// c = a['b'];
alert(c);
天际的海浪 2016-06-06
  • 打赏
  • 举报
回复
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。
KK3K2005 2016-06-06
  • 打赏
  • 举报
回复
那为什么有时候只有前者能用或是后者能用? 你吧那些时候的代码实际写出来 一看就明白了

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧