如何从json函数访问javascript中的基类变量

时间:2015-02-12 08:20:51

标签: javascript

我的代码就像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>

4 个答案:

答案 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(); 

在此处查看演示:https://jsfiddle.net/laruiss/89vpLxxy/1/

答案 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))
}