gpt4 book ai didi

javascript - 在javascript中引用父对象

转载 作者:行者123 更新时间:2023-11-30 16:20:59 25 4
gpt4 key购买 nike

我是 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();

问题:有没有办法在不借助其他方法(如bar.init)的情况下解决这种情况?我只想通过更改构造函数 Custom 来解决这个问题!与IIFE有关吗?

最佳答案

试试这个:

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

关于javascript - 在javascript中引用父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com