我正在尝试创建一个简单的接口来生成 JSON 格式的数据。可以成功添加第一个对象。但是当我尝试添加另一个(将其附加到“myDict”数组对象:请参见下面的代码)时,原始对象的值被覆盖,并且我似乎也添加了一个空键/值对。
我猜这与每次将新对象添加到“myDict”时不创建“createObj”对象的新实例有关。所以,我试图找出如何动态创建新实例。到目前为止,这是我的代码:
// VARIABLES
var myDict = [];
// CLASSES
function createObj() {
this.myObj = {};
}
createObj.prototype.newPair = function() {
this.newKey = document.getElementById('key').value;
this.newValue = document.getElementById('value').value;
this.myObj[this.newKey] = this.newValue;
console.log(this.myObj);
document.getElementById('key').value = null;
document.getElementById('value').value = null;
document.getElementById('key').focus();
}
createObj.prototype.addIt = function() {
myDict.push(this.myObj);
console.log(myDict);
}
// ACTIONS
$('#createNew').click(function() {
$('#item').show();
var myItem = new createObj();
$('button#create').click(function() {
myItem.newPair();
});
$('#done').click(function() {
$('#item').hide();
myItem.addIt();
});
});
我在这里查看了一个类似的 Stack Overflow 问题:动态创建对象实例的约定是什么?
. . . 但它似乎没有为我的问题提供任何答案。如果有帮助,这里是 JSFiddle:http: //jsfiddle.net/mysterexs/rffmV/
注意:JSFiddle 不显示输出,但它为您提供所有代码并提供更多上下文。任何帮助表示赞赏。