今天帮伙伴解决一个问题,开发功能中对象的属性名是一个变量。按照他编写的代码赋值后的对象,直接将变量名作为了属性名。以下是其编写代码:
var aa = "ok";
var bb = "no";
var obj = {aa:bb};
console.log(obj);
输出的对象是:
{aa: "no"}
这是因为 var obj = {aa:bb}; 这样的写法是和使用对象的点运算符赋值一样的,点号后的属性名是静态的,是写死的。所以这种写法会直接将aa作为对象的属性名称
如果想将对象的属性名作为变量来赋值,只能采用关联数组的写法,如下:
var aa = "ok";
var bb = "no";
var obj = {};
obj[aa] = bb;
console.log(obj);
此时输出的对象为{ ok="no"};即使伙伴想要的内容了。