如何访问对象内的方法

时间:2018-04-02 22:44:50

标签: javascript

这是一个菜鸟问题。我对其他语言很熟悉,但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"每次我需要访问它,因为这根本没有任何意义。

1 个答案:

答案 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());