实例冲突- JSON对象

Instances Conflicting - JSON objects

本文关键字:对象 JSON 冲突 实例      更新时间:2023-09-26

我做得不对。

试图创建我的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个单独的对象实例呢?

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

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

问题是需要一个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文档创建对象的新实例。