使用当前变量值动态创建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?