如何在扩展类 javascript 中获取更新的对象数组

Posted

技术标签:

【中文标题】如何在扩展类 javascript 中获取更新的对象数组【英文标题】:How to get updated object array in extended class javascript 【发布时间】:2021-07-11 07:01:39 【问题描述】:

大家好,我是 ES6 类的新手,目前想用更新的数据继承启动的对象(this._obj),但在 B 类中,我获取的是启动对象的长度而不是更新的对象?

class A 
      constructor() 
        //intiating array of object with length 0
        this._obj = new Object();
        this._obj['abarray'] = [];
      
      _renderData() 
        let datas = 
          id: 1,
          name: 'abc',
        ;
        this._obj['abarray'].push(datas);
        console.log(this._obj);
        //output
        /*abarray: Array(1)
        abarray: Array(1)
        0: id: 1, name: "abc"
        length: 1
        __proto__: Array(0)
        __proto__: Object 
       */
      
    
    const a = new A();
    a._renderData();
    
    class B extends A 
      constructor() 
        super();
      
      _showObjectData() 
        //here i want to get the updated object with length 1 as shown in output but i getting as intialized
        /*
        abarray: Array(0)
            abarray: Array(0)
            length: 0
            __proto__: Array(0)
            __proto__: Object
        */
        console.log(this._obj);
      
    
    const b = new B();
    b._showObjectData();

请任何人都可以帮助如何实现这一目标...

【问题讨论】:

【参考方案1】:

A 的实例上调用_renderData 不会影响AB 的其他实例,如果您想为B 的每个实例调用_renderData,请进行调用构造函数本身,否则在 B 的各个实例上调用它。

在下面的代码 sn-p 中,我创建了另一个 A 实例并将其存储在变量 a1 中,现在如果您记录 a1._obj,它将与 a._obj 不同。

class A 
  constructor() 
    this._obj = new Object();
    this._obj["abarray"] = [];
  
  _renderData() 
    let datas =  id: 1, name: "abc" ;
    this._obj["abarray"].push(datas);
  


const a = new A();
a._renderData();
console.log("a", a._obj);

// Another instance of "A"
const a1 = new A();
console.log("a1", a1._obj); // a1._obj is not same as a._obj

Bconstructor 中调用它。

class A 
  constructor() 
    this._obj = new Object();
    this._obj["abarray"] = [];
  
  _renderData() 
    let datas =  id: 1, name: "abc" ;
    this._obj["abarray"].push(datas);
  


const a = new A();
a._renderData();
console.log("a", a._obj);

class B extends A 
  constructor() 
    super();
    this._renderData();
  
  _showObjectData() 
    return this._obj;
  


const b = new B();
console.log("b", b._showObjectData());

B 的实例上调用它。

class A 
  constructor() 
    //intiating array of object with length 0
    this._obj = new Object();
    this._obj["abarray"] = [];
  
  _renderData() 
    let datas =  id: 1, name: "abc" ;
    this._obj["abarray"].push(datas);
  


const a = new A();
a._renderData();
console.log("a", a._obj);

class B extends A 
  constructor() 
    super();
  
  _showObjectData() 
    return this._obj;
  


const b = new B();
b._renderData();
console.log("b", b._showObjectData());

【讨论】:

@GoudaPatil 请检查这是否解决了您的问题,如果您有任何问题,请告诉我。 我可以按相反的顺序做同样的事情吗,我的意思是我将删除 B 类中的数组数据并再次更新它,它可以为 A 类更新吗?

以上是关于如何在扩展类 javascript 中获取更新的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript类中创建一个静态字段[重复]

已更新如何在 JavaScript 中获取 UTC 时间戳?

如何在滚动视图中显示从 Web 获取的 NSArray 数据并在 Objective C 中扩展+更新它?

使用扩展脚本(javascript)如何从 Photoshop 颜色表中获取颜色值

如何使用 JavaScript SDK 更新解析平台中的用户类?

如何使用 Javascript 获取未知文件路径 - 扩展路径?