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