我想添加一个新的属性'myObj',命名为'string1',并给它一个值'string2',但当我这样做时,它返回'undefined:
var myObj = new Object;
var a = 'string1';
var b = 'string2';
myObj.a = b;
alert(myObj.string1); //Returns 'undefined'
alert(myObj.a); //Returns 'string2'
换句话说:我如何创建一个对象属性并给它存储在变量中的名称,而不是变量本身的名称?
下面演示了使用(a, b)形式返回键对对象的另一种方法。第一个示例使用字符串'key'作为属性名,'val'作为值。
例# 1:
(function(o,a,b){return o[a]=b,o})({},'key','val');
例如:# 2:
var obj = { foo: 'bar' };
(function(o,a,b){return o[a]=b,o})(obj,'key','val');
如第二个示例所示,这也可以修改现有对象(如果对象中已经定义了property,则value将被覆盖)。
结果#1:{key: 'val'}
结果#2:{foo: 'bar', key: 'val'}
下面演示了使用(a, b)形式返回键对对象的另一种方法。第一个示例使用字符串'key'作为属性名,'val'作为值。
例# 1:
(function(o,a,b){return o[a]=b,o})({},'key','val');
例如:# 2:
var obj = { foo: 'bar' };
(function(o,a,b){return o[a]=b,o})(obj,'key','val');
如第二个示例所示,这也可以修改现有对象(如果对象中已经定义了property,则value将被覆盖)。
结果#1:{key: 'val'}
结果#2:{foo: 'bar', key: 'val'}