对js对象定义几种方式的理解
2015-06-26 14:51
696 查看
对比以下两个程序
这两个是截然不同的 obj1.toString()---{domain:"hello,world"}
obj2.toString()---{localhost:"hello,world"}
也就是说通过{ }这种对象字面量直接定义对象,那个属性不管加不加引号,他就是一个字符串,而且这里不能执行任何代码
比如{domain+":8080":"hello,world"} 这是完全错误的
特别是向一个函数传入一个对象的时候,一定要注意
再看一个程序
这个对象并没有因为属性的不同,而创造两个属性
那个因为对象的属性只可能是字符串,就算你传入一个对象,也会自动将这个对象转化成字符串
var domain="localhost"; var obj1={domain:"hello,world"};
var obj2={}; obj2[domain]="hello,world";
这两个是截然不同的 obj1.toString()---{domain:"hello,world"}
obj2.toString()---{localhost:"hello,world"}
也就是说通过{ }这种对象字面量直接定义对象,那个属性不管加不加引号,他就是一个字符串,而且这里不能执行任何代码
比如{domain+":8080":"hello,world"} 这是完全错误的
特别是向一个函数传入一个对象的时候,一定要注意
再看一个程序
var obj={}; var input1=document.getElementById("input1"); var input2=document.getElementById("input2"); obj[input1]="input1"; obj[input2]="input2"; 注意input1,和input2是两个不同的input元素 现在执行obj.toString(); 结果是什么{HTMLInputElement:"input2"}
这个对象并没有因为属性的不同,而创造两个属性
那个因为对象的属性只可能是字符串,就算你传入一个对象,也会自动将这个对象转化成字符串
相关文章推荐
- js创建制定制定行数和列数的表格以及删除制定行和列
- IE中js不兼容new Date()带参
- js函数的几种写法
- 我的Javascript的O-O实现
- jsp和EL表达式
- ExtJs grid 回调函数里Function()参数里的具体意义及如何带参数掉函数
- javascript中数组的操作方法
- json篇
- 格式化json数据
- JS中的prototype
- js中定义用字符串拼接起来的变量名的变量
- js实现跨浏览器好友列表
- 项目总结一(积分)
- 基于ExtJs的桌面系统(2)
- javascript 数组迭代方法
- 10个JavaScript小技巧
- jsoncpp用法(判断void* pData是否为json格式的字符串)
- 关于json操作
- js 时间操作大全
- JavaScript中的变量