实例冲突 - JSON对象

时间:2015-09-08 18:25:43

标签: javascript node.js

我没有做对。

尝试在我的json模型模板文件中创建2个数据模型实例并使用它们,但我显然没有得到2个不同的模型实例。

myModel.json

{
    "id": null
}

myNodeModule.js

var myModel = require('../../entities/myModel');

module.exports = {

    find: function *(id){
        var myModelInstance1 = myModel;
        myModelInstance1.id = 1;

        var myModelInstance12 = myModel;
        myModelInstance12.id = 2;

        found.push(myModelInstance11);
        found.push(myModelInstance12);

        console.log("id: " + found[0].id);
}

问题:它记录" 2"因为某种原因它应用了myModel1的最后一次初始化。

那么如何创建myModel.json的两个独立对象实例?

2 个答案:

答案 0 :(得分:0)

改为创建一个函数,它返回对象并调用它。

function myModelFact(){
  return {
      "id": null
  }
}

答案 1 :(得分:0)

问题是需要JSON文档创建一个对象实例,但返回对该实例的引用(对象通过引用传递/分配)。这意味着当您将myModel(它是对象的引用)分配给另一个变量时,您实际上是在指定同一个对象的指针。因此,如果修改引用,则单个实例会更改,并且该更改将反映对该实例的所有引用。

尝试这样的事情:

function _getModelInstance() {
    return require('../../entities/myModel');
}

module.exports = {

    find: function(id){
        var myModelInstance1 = _getModelInstance();
        myModelInstance1.id = 1;

        var myModelInstance12 = _getModelInstance();
        myModelInstance12.id = 2;

        found.push(myModelInstance11);
        found.push(myModelInstance12);

        console.log("id: " + found[0].id);
}

此代码将根据需要从JSON文档创建对象的新实例。