Javascript从外部访问内部函数

时间:2017-11-17 22:10:56

标签: javascript function

我有以下 json 对象

{
 ....
 ....
 data: function() {
    var x = 10;
    function isBig() {
        return x>6;
    }
    return x;
 }
}

我希望isBig成为数据中的函数。

当我致电data.isBig时,我收到undefineddata.isBig()给我一个错误,说isBig不是函数。

2 个答案:

答案 0 :(得分:3)

首先,那不是JSON。这是一个对象。 目前您的对象的结构方式,isBig只能从data内部访问。如果要在data之外访问它,最简单的方法是使其成为外部对象的属性:

{
    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),而调用new data()则返回一个对象,该对象具有与该函数对应的属性isBig。这允许您这样做:

new myObj.data().isBig()

答案 1 :(得分:0)



obj = {
	data: function(){
    	   var x = 10;
	   return this.isBig(x);
    },
	isBig: function(x){
           return x > 6;
    }
};




如果你想重现这个功能,但是有用的话,你可以通过一个构造函数添加这个功能。



f = {
  isSmall: function(){},
  isBig: function(x){
    return x > 6;
  }
};
obj = {
  data: function(){
    var x = 10;
    return this.isBig(x);
  },
  isBig: f.isBig
};
obj.data();
obj.isBig(2);
f.isBig(2);