用当前变量值动态创建Javascript函数

Dinamically create Javascript function with current variable values

本文关键字:创建 Javascript 函数 动态 变量值      更新时间:2023-09-26

我不知道如何正确询问我需要什么,所以让我试试。。

如何将当前变量内容(文字)传递给按常规创建的函数?

也许有了以下代码,你会更好地理解:

function MyClass(){
  for (i = 1; i <= 10; i++){
    this['show' + i] = function(){
      alert('You called show' + i);
    };
  }
}
var obj = new MyClass();
obj.show3();

我希望在警报中显示的是"您呼叫了show3",而不是"show11"。

感谢

由于javascript没有块作用域(直到ECMAScript 6中的let),您的原始函数将绑定相同的i值。调用另一个生成自己的新函数可以避免这种情况,并给i不同的值。

function MyClass() {
  for (i = 1; i <= 10; i++) {
    this['show' + i] = myFunc(i);
  }
}
function myFunc(i) {
    return function() {
       alert(i);
    }
}
var obj = new MyClass();
obj.show3();

JavaScript中有一种称为绑定的机制。您可以将作用域和任何变量绑定到函数,以便在函数内部使用它们。作用域将在函数内定义this关键字。所有其他绑定变量都可以作为参数使用,因此本例中的i变量将不是全局作用域,而是局部作用域,并在函数创建中传递值。

for (i = 1; i <= 10; i++){
    this['show' + i] = function(i){
      alert('You called show' + i);
    }.bind(this,i);
}