这是我的对象文字:

var obj = {key1: value1, key2: value2};

如何将值为3的字段key3添加到对象中?


当前回答

我知道这个问题已经有了一个公认的答案,但我想我应该在某个地方记录我的想法。请[人们]自由地戳破这个想法,因为我不确定这是否是最好的解决方案。。。但我几分钟前刚刚把这件事放在一起:

Object.prototype.push = function( key, value ){
   this[ key ] = value;
   return this;
}

您可以这样使用它:

var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );

由于原型函数正在返回此值,因此您可以继续将.push链接到obj变量的末尾:obj.push(…).push(……).press(…);

另一个特性是可以将数组或另一个对象作为push函数参数中的值传递。请参见我的小提琴,以获得一个有效的示例:http://jsfiddle.net/7tEme/

其他回答

大多数答案中已经提到了两种最常用的方法

obj.key3 = "value3";

obj["key3"] = "value3";

定义属性的另一种方法是使用Object.defineProperty()

Object.defineProperty(obj, 'key3', {
  value: "value3",       // undefined by default
  enumerable: true,      // false by default
  configurable: true,    // false by default
  writable: true         // false by default
});

当您希望在定义属性时拥有更多控制权时,此方法非常有用。用户可以将定义的属性设置为可枚举、可配置和可写。

obj['key3']=value3或obj.key3=value3将向obj添加新对。

然而,我知道没有提到jQuery,但是如果您正在使用它,可以通过$.exextend(obj,{key3:‘value3‘})添加对象。例如。:

var obj={key1:“value1”,key2:“value2”};$(“#ini”).append(JSON.stringify(obj));$.exextend(obj,{key3:“value3”});$('#ext').append(JSON.stringify(obj));<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><p id=“ini”>首字母:</p><p id=“ext”>扩展:</p>

extend(target[,object1][,objectN])将两个或多个对象的内容合并到第一个对象中。

它还允许使用$.exextend(true,object1,object2);进行递归添加/修改:

变量对象1={苹果:0,香蕉:{重量:52,价格:100},樱桃:97};变量对象2={香蕉:{价格:200},榴莲:100};$(“#ini”).append(JSON.stringify(object1));$.exextend(true,object1,object2);$(“#ext”).append(JSON.stringify(object1));<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><p id=“ini”>首字母:</p><p id=“ext”>扩展:</p>

示例显示的是对象,而不是数组。在这种情况下,将字段添加到Object的首选方法是只分配给它,如下所示:

arr.key3 = value3;

你可以用@IonuțG.Stan的答案创建一个类

function obj(){
    obj=new Object();
    this.add=function(key,value){
        obj[""+key+""]=value;
    }
    this.obj=obj
}

使用最后一个类创建新对象:

my_obj=new obj();
my_obj.add('key1', 'value1');
my_obj.add('key2', 'value2');
my_obj.add('key3','value3');

打印对象

console.log(my_obj.obj) // Return {key1: "value1", key2: "value2", key3: "value3"} 

打印密钥

console.log(my_obj.obj["key3"]) //Return value3

我是javascript新手,欢迎评论。对我有用。

我知道这个问题已经有了一个公认的答案,但我想我应该在某个地方记录我的想法。请[人们]自由地戳破这个想法,因为我不确定这是否是最好的解决方案。。。但我几分钟前刚刚把这件事放在一起:

Object.prototype.push = function( key, value ){
   this[ key ] = value;
   return this;
}

您可以这样使用它:

var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );

由于原型函数正在返回此值,因此您可以继续将.push链接到obj变量的末尾:obj.push(…).push(……).press(…);

另一个特性是可以将数组或另一个对象作为push函数参数中的值传递。请参见我的小提琴,以获得一个有效的示例:http://jsfiddle.net/7tEme/