我一直在寻找一种方法来向现有对象添加新元素,例如使用数组推送
我试过这个并没有用:
var myFunction = {
Author: 'my name ',
date: '15-12-2012',
doSomething: function(){
alert("helloworld")
}
};
myFunction.push({
bookName:'mybook',
bookdesc: 'new'
});
console.log(myFunction);
答案 0 :(得分:60)
使用此:
myFunction.bookName = 'mybook';
myFunction.bookdesc = 'new';
或者,如果您使用的是jQuery:
$(myFunction).extend({
bookName:'mybook',
bookdesc: 'new'
});
push
方法错误,因为它属于Array.prototype
对象。
要创建命名对象,请尝试以下方法:
var myObj = function(){
this.property = 'foo';
this.bar = function(){
}
}
myObj.prototype.objProp = true;
var newObj = new myObj();
答案 1 :(得分:13)
只需myFunction.foo = "bar"
即可添加。在这种情况下,myFunction
是对象的名称。
答案 2 :(得分:4)
$.extend(myFunction,{
bookName:'mybook',
bookdesc: 'new'
});
答案 3 :(得分:3)
您可以使用Extend向现有对象添加新对象。
答案 4 :(得分:3)
您正在寻找jQuery extend method。这将允许您将其他成员添加到已创建的JS对象中。
答案 5 :(得分:0)
您可以将JSON存储在数组中,然后使用push
检查https://jsfiddle.net/cx2rk40e/2/
$(document).ready(function(){
// using jQuery just to load function but will work without library.
$( "button" ).on( "click", go );
// Array of JSON we will append too.
var jsonTest = [{
"colour": "blue",
"link": "http1"
}]
// Appends JSON to array with push. Then displays the data in alert.
function go() {
jsonTest.push({"colour":"red", "link":"http2"});
alert(JSON.stringify(jsonTest));
}
});
JSON.stringify(jsonTest)
的结果
[{"colour":"blue","link":"http1"},{"colour":"red","link":"http2"}]
此答案对于希望模拟类似结果的用户可能有用。