对比以下两个程序
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"}
这个对象并没有因为属性的不同,而创造两个属性
那个因为对象的属性只可能是字符串,就算你传入一个对象,也会自动将这个对象转化成字符串