将变量传递给对象键功能并返回到请求功能

时间:2014-08-02 00:49:45

标签: javascript object

似乎我只能为此创建一个全局变量,但这是理想的。我想将一个变量传递给一个具有引用函数的键的对象。在我引用的函数中,我想设置该变量或在调用它的函数中定义的变量并将其传回:

jsfiddle

var methodHandler = {
    'a-key': function () {
        aVariable = document.getElementById('a-container');
    }
}

function sample() {
    var aVariable;

    methodHandler['a-key']();
    console.log(aVariable);
}

sample();

2 个答案:

答案 0 :(得分:2)

由于范围界定,你不能那样做。但是,您可以像这样重组它并获得类似的结果:

var methodHandler = {
    'a-key': function () {
        return document.getElementById('a-container');
    }
}

function sample() {
    var aVariable = methodHandler['a-key']();
    console.log(aVariable);
}

sample();

答案 1 :(得分:0)

您应该使用this元素。 this元素在对象函数内部调用时,会被引用到对象本身,因此执行this.foo = 1实际上会在对象中创建一个名为foo的属性,其值为1。

以下是代码的正确形式:

var methodHandler = {
    'a-key': function () {
        this.aVariable = document.getElementById('a-container');
        return this.aVariable;
    }
}

function sample() {
    // You can do this:
    methodHandler['a-key']();
    console.log(methodHandler['aVariable']);

    // Or you can do this instead:
    console.log(methodHandler['a-key']());
}

sample();

当您致电methodHandler['a-key']()时,您的对象中会设置属性aVariable,因此如果您记录该对象,您会看到:

console.log(methodHandler);
> Object {a-key: function, aVariable: div#a-container}