我的代码就像https://jsfiddle.net/89vpLxxy一样有效
我在函数内部创建了两个函数,一个是普通函数,另一个是json函数,我可以从普通函数访问基类变量而不是从json函数访问。如何访问变量?
我试过如下所示
<script>
var funvar=function(A)
{
alert(A);
this.name = "Merbin Joe";
this.fun1=function()
{
alert(this.name);
},
this.colanfun= {
saveScore:function () {
alert("HHHHHH : "+this.name);
}
}
}
var Obj = new funvar();
Obj.fun1();
Obj.colanfun.saveScore();
</script>
答案 0 :(得分:1)
在你的JSON函数中,这个关键字引用的是colafun而不是你的外部函数范围(即funvar)。您可以将此引用存储在变量self中,然后您可以访问它。
var funvar=function()
{
var self = this;
this.name = "Merbin Joe";
this.fun1=function()
{
alert(this.name);
},
this.colanfun= {
saveScore:function () {
alert("HHHHHH : "+self.name); //Here How Can I access
}
}
}
答案 1 :(得分:0)
没有&#39; JSON功能&#39;,但这就是你想要的:
您需要将该功能绑定到this
See bind doc from Mozilla DN
var funvar=function()
{
this.name = "Merbin Joe";
this.fun1=function()
{
alert(this.name);
},
this.colanfun= {
saveScore:function () {
alert("HHHHHH : "+this.name); //Here How Can I access
}.bind(this)
}
}
var Obj = new funvar();
Obj.fun1();
Obj.colanfun.saveScore();
答案 2 :(得分:0)
var funvar=function(A)
{
var that = this;
alert(A);
that.name = "Merbin Joe";
that.fun1=function()
{
alert(that.name);
},
that.colanfun= {
saveScore:function () {
alert("HHHHHH : "+that.name);
}
}
}
var Obj = new funvar();
Obj.fun1();
Obj.colanfun.saveScore();
答案 3 :(得分:0)
您可以使用闭包生成函数,例如此代码:
this.colanfun= {
saveScore:(function(parent) { return function () {
alert("HHHHHH : "+parent.name); //Here How Can I access
}; }(this))
}