似乎我只能为此创建一个全局变量,但这是理想的。我想将一个变量传递给一个具有引用函数的键的对象。在我引用的函数中,我想设置该变量或在调用它的函数中定义的变量并将其传回:
var methodHandler = {
'a-key': function () {
aVariable = document.getElementById('a-container');
}
}
function sample() {
var aVariable;
methodHandler['a-key']();
console.log(aVariable);
}
sample();
答案 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}