我有以下 json 对象
{
....
....
data: function() {
var x = 10;
function isBig() {
return x>6;
}
return x;
}
}
我希望isBig
成为数据中的函数。
当我致电data.isBig
时,我收到undefined
而data.isBig()
给我一个错误,说isBig
不是函数。
答案 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);