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

使用当前变量值动态创建Javascript函数,javascript,Javascript,我不知道如何正确地问我需要什么,所以让我试试 如何将当前变量内容(文字)传递给一个手动创建的函数 也许通过以下代码,您可以更好地理解: function MyClass(){ for (i = 1; i <= 10; i++){ this['show' + i] = function(){ alert('You called show' + i); }; } } var obj = new MyClass(); obj.show3(); 函数My

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

如何将当前变量内容(文字)传递给一个手动创建的函数

也许通过以下代码,您可以更好地理解:

function MyClass(){

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

var obj = new MyClass();

obj.show3();
函数MyClass(){

对于(i=1;i,因为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();
函数MyClass(){

对于(i=1;iJavaScript中有一种称为绑定的机制。您可以将作用域和任何变量绑定到函数中,以便在函数中使用它们。作用域将在函数中定义
这个
关键字。所有其他绑定的变量都可以作为参数使用,因此本例中的
i
变量将没有全局变量,而是loc在函数创建中传递了一个值

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

for(i=1;我可能重复感谢你的所有回复。@弗朗西索,我喜欢你的答案,但是凯戈罗多夫的答案更简单,所以我把它标记为答案ok?