这是一个菜鸟问题。我对其他语言很熟悉,但JS对我来说没有任何意义,我似乎无法弄清楚如何访问私有方法,如果这就是我试图访问的内容。与其他语言imo相比,JS语法只是愚蠢。
我的代码如下:
loadForm({
optionA: "somevalue",
optionB : "Some value",
}, function(form){
form.start() //There is a form.stop() method I may use later also as well as .isRunning() and some other things.
if (form.isRunning()) //This works just fine
{
alert("running"); //This works just fine
}
});
alert(loadForm.form.isRunning()); //This will say form is not defined.
isRunning方法在loadForm的本地范围内工作,但是当我尝试从loadForm外部访问它时(我不知道loadForm是什么,我假设它的某种对象和形式被定义为一种方法)。无论如何,重点是,我希望能够访问包含的所有方法,例如isRunning()和其他位置的其他方法。我如何访问表单的其他方法。
我不知道为什么它以这种方式编码,因为它甚至没有任何意义,但它是我必须使用的,它不能改变。我想做什么甚至可能。我不想继续初始化" loadForm"每次我需要访问它,因为这根本没有任何意义。
答案 0 :(得分:0)
您可以在调用loadForm
之前声明变量,并在运行form
等的函数回调中将form.start()
的引用传递给它。
// >>>> Just to mock loadForm
const loadForm = (obj, cb) => {
const fn = {
isRunning: () => 'yes'
};
return cb(fn);
}
// <<<<
// One of the calls
let formObj;
loadForm({}, form => {
form.isRunning();
formObj = form;
});
// Test here
alert(formObj.isRunning());
使用&lt;它将是ES 2005语法
// >>>> Just to mock loadForm
function loadForm(obj, cb) {
var fn = {
isRunning: function() { return 'yes' }
};
return cb(fn);
}
// <<<<
// One of the calls
var formObj;
loadForm({}, function(form) {
form.isRunning();
formObj = form;
});
// Test here
alert(formObj.isRunning());