在另一个对象中创建复杂/嵌套JavaScript对象的正确方法

Avia Afer

以下代码旨在作为可重用对象的简单构造的简短示例。这是一个非常简单的单层深度对象,可以根据需要放置任意数量的道具和方法,并对其进行分配。

function someDesiredReusableType(optionally, pass, ctor, pars, here) {
   //core obj to return
  var DesiredTypeCrtor = {
              propSkiingLocation: "canada",
              OrderTickets: function(optionally){
                             var tryRoomWView = optionaly;
                             print(
                                  "Dear " + ctor +", your request for " +
                                  propSkiingLocation + " is now being processed: an " +
                                  tryRoomWView  + " request was notified, we understand you have " + pars + " for cross country transportation, confirmation email will be sent " + here + " as soon as we process your order. }
              } 
      };
 return DesiredTypeCrtor 
}

这是此用法的示例:

 var DesrVacSkC = someDesiredReusableType("could really help!",null, "mr. Bean", "my mini", "[email protected]") 

//oh..almost forgot
DesrVacSkC.OrderTickets();

作为这个富有想象力的对象,实际上并不像我在代码中使用的那样简单,它确实可以正常工作(没有尝试这个实际的对象,因为它只是一个例子。)

但是,类似使用相同方法的下一个设置有些问题。

这是我已经成功完成一个对象的示例,并且眨眼间就使用了与越野车对象完全相同的方法将其实现为嵌套对象,我不明白为什么它们在浏览器中没有采用相同的方法。

//this is an important one, a smart property / value holder I came up with and does work perfectly, as a nested member.

function Rprp(parVal) {
    var cretdprp = {

        propVal: parVal,
        propValAsint: parseInt(parVal)

    };
    return cretdprp;

}

但是下一个没有,因为它缺少用于初始化的正确方法 ownedFefCollCore

未捕获的TypeError:无法读取未定义的属性'HElmTColl'

//这是很重要的一个,它最初是一个很好的开始,将其添加到下面的对象中,直到添加ownedFefCollCore成员为止

function CreateFileEditForm_Manager() {
//as i do usually base/inner/creator and a return obj
var Repo = {
    CsDataLocals:
               {

                GetCurLastfileId:Rprp($("#HLocModelData_LastFileId").val())

                 },
    FormFldNames:
                        { JRdrData_FileName: "JRdrData_FileName" },

    //this is my bugg ! with and without new keyword & as function or Object!!
    ownedFefCollCore: new FefCollCore(),

   //and this is the line that chrome get's is anger on --> all day long 
    FeFDivWFldsColl: this.ownedFefCollCore.HElmTColl,
    FeFDivWFlds_IdColl: this.ownedFefCollCore.HElmT_IdColl,
    FeFDivWFldsCollAdd: function (parId, parFefDivWrpDivflds) {
        this.ownedFefCollCore.CollAdd(parId, parFefDivWrpDivflds);
    },
       / ........

     //some more code was removed trying to keep it as short as possible
  }

 //fefa stands for fileRecord Edit Form , core just says nothing, is there to imply the 'thing' is to be shared between variation of instances from the base object

我在研究中发现了以下方法,以减少容易出错的结构,但即使这种方法也无法纠正错误。并且发现了其他一些东西,例如这个Object.create()

var FefCore = JClassProto({
    initialize: function () {
        this.HElmTColl = new Array();//was originally [] ...             
    //i changed because i wanted to eliminate any doubt that it's one of the reasons my code is ... Somewhere undefined , now i know (pretty sure they might be little different but both are ok.) it's not it.
        this.HElmT_IdColl = new Array();
        this.CollAdd = function (parId, parHElmT) {
            this.HElmTColl.push(parHElmT);
            this.HElmT_IdColl.push(parId);
        }
        this.Coll_Remove = function (parHElmT) {
            this.HElmTColl.pop(parHElmT);
        }
        // this is the first move, if a new object(which is an element in the array) about to be created,
        // call this to make sure not exist for i create do
        this.ElmObjCanCreate = function (parId) {
            return this.getIndexOfValuInDivWFldsColl(parId) < 0;
        }
        this.HElmTColl_FindById = function (parId) {
            var collindexofCurFileReadyDivWrpFlds = this.getIndexOfValuInDivWFldsColl(parId);
            return this.HElmTColl[collindexofCurFileReadyDivWrpFlds];
        }

        this.getIndexOfValuInHElmTColl = function (parId) {
            return $.inArray(parId, this.HElmT_IdColl);
        }
    }
});

最后但并非最不重要的一点是我的原始代码(尝试将其创建为基础/共享对象之后)。

function FefCollCore() {
    this.Cr = {
        HElmTColl: new Array(),
        HElmT_IdColl: new Array(),
        CollAdd: function (parId, parHElmT) {
            this.HElmTColl.push(parHElmT);
            this.HElmT_IdColl.push(parId);
        },
        Coll_Remove: function (parHElmT) {
            this.HElmTColl.pop(parHElmT);
        },
        CollNeedCreate: function (parId) {
            return this.getIndexOfValuInDivWFldsColl(parId) < 0;
        },
        HElmTColl_FindById: function (parId) {
            var collindexofCurFileReadyDivWrpFlds = this.getIndexOfValuInDivWFldsColl(parId);
            return this.HElmTColl[collindexofCurFileReadyDivWrpFlds];
        },

        getIndexOfValuInHElmTColl: function (parId) {
            return $.inArray(parId, this.HElmT_IdColl);
        }
    };
    return this.Cr;

}
客人271314
   //and this is the line that chrome get's is anger on --> all day long 
    FeFDivWFldsColl: this.ownedFefCollCore.HElmTColl,

如果正确解释问题,则可以尝试将其设置FeFDivWFldsColl为返回的函数this.ownedFefCollCore.HElmTColl

var FefCore = function() {
  this.e = new Array();
  this.e.push(2);
}

function CreateFileEditForm_Manager() {
  var Repo = {
    a: 0,
    b: 1,
    c: new FefCore(),
    // set `FeFDivWFldsColl` value as a function
    d: function() {
      // `this.c` : `new FefCore()` , `this.c.e` : `new Array()`      
      return this.c.e
    }
  };
  return Repo
}

var Fef = new CreateFileEditForm_Manager();
console.log(Fef.d())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript:在JavaScript中从另一个对象创建一个深度嵌套的对象

在PHP中创建另一个类的对象的正确方法是什么?

在另一个对象中创建的模拟对象

在另一个对象中动态创建对象

将JSON对象包装在另一个对象中的正确方法是什么?

如何通过比较值从嵌套对象数组中获取信息以创建另一个嵌套对象?

如何从JavaScript中的另一个对象创建自定义对象

更新从Javascript中的另一个对象引用数据的对象的最佳方法?

访问在另一个类中创建的对象

访问在另一个类中创建的对象

访问在另一个函数中创建的对象

AngularJS / JavaScript从另一个对象创建一个新对象

从另一个对象动态嵌套对象

如何更新另一个对象中复杂对象的值?

在另一个类的构造函数中创建n个对象的最佳方法?

基于Python中的另一个对象属性创建一个类的对象

根据Javascript中另一个对象的属性数量创建新数组

Javascript:如果位于另一个文件中,则无法创建新对象

JavaScript从另一个文件中创建自定义对象以进行测试

订单对象基于 JavaScript 中的另一个

在JavaScript中删除对另一个对象的引用

复杂的对象在另一个里面

如何创建一个复杂的嵌套->属于对象?

Javascript:如何将嵌套对象重构为另一个对象?

用 JQ 中另一个文件中的对象替换嵌套对象

是否在考虑组合的方法中从另一个类创建对象

从另一个类调用静态方法而无需在 Java 中创建对象

添加方法 - 另一个 NS 中的对象

如何在JavaScript中的另一个对象内添加一个对象?