如何从somevar:'this is Foo'
内部访问bar.foo()
?
function Foo(){
this.somevar='this is Foo';
}
Foo.prototype={
bar:{
somevar:'this is bar'
,foo:function(){
console.log(this);
}
}
}
var instance = new Foo();
instance.bar.foo();
这是jsfiddle的链接: http://jsfiddle.net/jct8n/3/
答案 0 :(得分:3)
我想也许语言的范围规则不会以任何直接的方式允许这种情况。我能想出的最好的建议是获得你想要的东西(除了首先重命名somevar
以摆脱冲突)是使用apply()
来改变{{1}的值} this
内部,如:
foo()
这是一个小提琴:
答案 1 :(得分:2)
我将此方法用于公共和私有实例变量:
答案 2 :(得分:1)
console.log(Foo.prototype.somevar);
或者,您应该考虑重命名其中一个somevar
变量,以便轻松实现您的目标,并消除一些复杂性和混淆。