我是JavaScript新手,正在努力解决以下问题。在javascript中引用父对象
让我们来思考这种情况。
首先,有一个这样的对象。
var bar = {
'name' : 'bob',
'comments' : []
}
但是,由于一些原因,我们只有一个名为“富”,这是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', 'comments':new Custom(bar) }' – Lewis
@tresden不会工作 - 会通过'undefined'。 –
@ DanielA.White哦,我的坏。它应该和你的答案类似。 – Lewis