我有以下 JSON對象的Javascript訪問內部函數從外部
{
....
....
data: function() {
var x = 10;
function isBig() {
return x>6;
}
return x;
}
}
我希望isBig
爲內部數據的功能。
當我撥打data.isBig
我得到undefined
和data.isBig()
給我一個錯誤,說isBig
是不是一個函數。
我有以下 JSON對象的Javascript訪問內部函數從外部
{
....
....
data: function() {
var x = 10;
function isBig() {
return x>6;
}
return x;
}
}
我希望isBig
爲內部數據的功能。
當我撥打data.isBig
我得到undefined
和data.isBig()
給我一個錯誤,說isBig
是不是一個函數。
首先,這不是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()
obj = {
\t data: function(){
\t var x = 10;
\t return this.isBig(x);
},
\t isBig: function(x){
return x > 6;
}
};
如果要複製的功能,但useally你最好與構造器添加了這一點。
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);
它不會這樣的。沒門。 –
你所指的不是'json string'。這是一個簡單的JavaScript對象。該對象有一個'data'屬性,它是一個你想調用的函數。 –
閱讀關於*範圍*如何在javascript中工作的內容 – charlietfl