我有一个像这样的函数:
var func1 = function () {
var apple;
//Some other code
};
我已将该函数作为其他函数的参数传递
control(func);
现在,我想在控制功能中访问变量apple。 func1.apple
不起作用。有没有人知道这是怎么做的?
答案 0 :(得分:2)
在不改变功能的情况下使用这种语法是不可能的。 func1.apple
未运行apple
,而func1().apple
之类的内容已经运行apple
。如果您只想返回某些内容,请使用return
:
var func1 = function() {
var apple;
…
return apple;
};
var apple = func1();
如果要返回多个值,则返回一个对象:
var func1 = function() {
var apple;
…
return {apple: apple};
};
var apple = func1().apple;
如果在函数运行期间需要值,唯一的*方法是在回调中使用另一个回调:
var func1 = function(useApple) {
var apple;
…
useApple(apple);
…
};
func1(function(apple) {
// Do something with apple
});
*属性是另一种方式,但它们算作回调并且是邪恶的:)
答案 1 :(得分:0)
我认为你可能正在寻找的是构造函数模式
var func1 = function () {
this.apple = "My Apple";
};
var myFuncInstance = new func1();
myFuncInstance.apple; // "My Apple"