Javascript从外部访问内部函数

Javascript从外部访问内部函数,javascript,function,Javascript,Function,我有以下json对象 我希望isBig成为数据内部的函数 当我调用data.isBig时,我得到了未定义的和数据。isBig()给我一个错误,说isBig不是函数 首先,这不是JSON。它是一个物体。 按照当前对象的结构方式,isBig只能从数据内部访问。如果要在数据外部访问它,最简单的方法是将其作为外部对象的属性: { data: function() { var x = 10; return x; } isBig: functi

我有以下json对象

我希望
isBig
成为数据内部的函数


当我调用
data.isBig
时,我得到了
未定义的
数据。isBig()
给我一个错误,说
isBig
不是函数

首先,这不是JSON。它是一个物体。 按照当前对象的结构方式,
isBig
只能从
数据内部访问。如果要在
数据
外部访问它,最简单的方法是将其作为外部对象的属性:

{
    data: function()
    {
        var x = 10;
        return x;
    }
    isBig: function(x)
    {
        return x > 6;
    }
}
如果您不想这样做,那么另一种选择是:

{
    data: function()
    {
        var x = 10;
        this.isBig = function(x)
        {
            return x > 6;
        }
        return x;
    }
}
调用
data()
正常工作(返回10),而调用
newdata()
返回一个对象,该对象具有与函数对应的属性
isBig
。这允许您执行以下操作:

new myObj.data().isBig()

首先,这不是JSON。它是一个物体。 按照当前对象的结构方式,
isBig
只能从
数据内部访问。如果要在
数据
外部访问它,最简单的方法是将其作为外部对象的属性:

{
    data: function()
    {
        var x = 10;
        return x;
    }
    isBig: function(x)
    {
        return x > 6;
    }
}
如果您不想这样做,那么另一种选择是:

{
    data: function()
    {
        var x = 10;
        this.isBig = function(x)
        {
            return x > 6;
        }
        return x;
    }
}
调用
data()
正常工作(返回10),而调用
newdata()
返回一个对象,该对象具有与函数对应的属性
isBig
。这允许您执行以下操作:

new myObj.data().isBig()
obj={
数据:函数(){
var x=10;
返回这个。isBig(x);
},
isBig:函数(x){
返回x>6;
}
};
obj={
数据:函数(){
var x=10;
返回这个。isBig(x);
},
isBig:函数(x){
返回x>6;
}

};这样不行。不可能。您指的不是
json字符串。它是一个简单的javascript对象。这个对象有一个
data
属性,这是一个您想要调用的函数。请阅读javascriptJSON中的“scope”是如何工作的。JSON是一种数据传输格式,它肯定不包含函数……这就是函数scope的工作方式。它是如何将数据封装为私有的。您可以通过将私有数据返回到更高的作用域来公开私有数据—这样做行不通。不可能。您指的不是
json字符串。它是一个简单的javascript对象。这个对象有一个
data
属性,这是一个您想要调用的函数。请阅读javascriptJSON中的“scope”是如何工作的。JSON是一种数据传输格式,它肯定不包含函数……这就是函数scope的工作方式。它是如何将数据封装为私有的。您可以通过将私有数据返回到更高的作用域来公开私有数据。此代码是否经过测试?我不能让它工作。我做错什么了吗@Andrew你忘记了第二个关键字的
new
。@stybl如果你不介意我问的话。。。为什么我的代码在这里不起作用?这个代码经过测试了吗?我不能让它工作。我做错什么了吗@Andrew你忘记了第二个关键字的
new
。@stybl如果你不介意我问的话。。。为什么我的代码在这里不起作用?