javascript 中的引用父对象

reference parent object in javascript

我是 javascript 的新手,正在努力解决以下问题。

让我们考虑一下这种情况。

首先,有一个这样的对象。

var bar = {
            'name' : 'bob',
            'comments' : []
          }

但是由于某些原因,我们只有一个变量名为'foo',这与bar.comments完全相同。

其次,因为我们需要引用对象bar,所以foo中必须存在名为callParent的方法。如果我们满足所有这些条件,我们可以使用 foo.callParent().

得到对象 bar

要像上面那样实现,首先,我定义了一个构造函数名称Custom

function Custom(param){
    this.callParent = function(){
        console.log(param);
    }
}

然后,要像数组一样使用 Custom 的实例,继承 Array.

Custom.prototype = Array.prototype;

之后,我想定义对象 bar 如下所示。

var bar = {
            'name':'bob',
            'comments':new Custom(this)
          }

在那个实现中,因为我认为 this 意味着 bar 本身,所以我预计结果 foo.callParent() 将是 bar 但它是 window。我认为这是因为在调用 foo.callParent() 的上下文中,this 不再意味着 bar.

最后,我这样解决了这个问题。

var bar = {
            'name':'bob',
            'comments':undefined,
            'init':function(){
                        this.comments = new Custom(this);
                        return this;
            }
}.init();

Qeustion: 有没有什么办法可以解决这种情况,不用其他方法,比如bar.init?我只想通过更改构造函数 Custom 来解决这个问题!跟IIFE有关系吗?

试试这个:

var bar = {
        'name':'bob'
      };
bar.comments = new Custom(bar);