当我们需要根据变量保存方法名并执行方法的时候,可以使用JS中的eval()方法或将方法名作为属性名访问对象来实现。
1. 使用eval()方法执行方法名
eval()方法可以将字符串作为JavaScript代码执行。我们可以将方法名保存在字符串中,然后使用eval()方法执行该方法。
示例代码如下:
// 定义两个方法
function sayHello() {
console.log('Hello!');
}
function sayGoodbye() {
console.log('Goodbye!');
}
// 根据变量保存方法名并执行方法
let methodName = 'sayHello';
eval(methodName + '()'); // 输出:Hello!
methodName = 'sayGoodbye';
eval(methodName + '()'); // 输出:Goodbye!
在上面的示例中,我们定义了两个方法:sayHello和sayGoodbye。然后将方法名保存在变量methodName中,并将它作为字符串拼接到eval()方法中。最终,方法名所对应的方法会被执行。
注意:使用eval()会有安全问题,因为它能够执行任意字符串作为代码,可能会引发XSS漏洞,所以在实际开发中应当避免使用eval()。
2. 将方法名作为属性名访问对象
另一种方法是将方法名作为属性名访问对象,这时我们需要将方法名保存在一个对象中。在访问对象属性时,只需要使用中括号语法([])来访问方法即可。
示例代码如下:
// 定义一个对象,并将方法保存在它的属性名中
let methods = {
sayHello: function() {
console.log('Hello!');
},
sayGoodbye: function() {
console.log('Goodbye!');
}
};
// 根据变量保存方法名并执行方法
let methodName = 'sayHello';
methods[methodName](); // 输出:Hello!
methodName = 'sayGoodbye';
methods[methodName](); // 输出:Goodbye!
在上面的示例中,我们定义了一个名为methods的对象,并将两个方法保存在它的属性名中。在执行方法时,我们只需要将方法名保存在变量中,并使用中括号语法访问对象属性即可执行方法。
这种方法不会像eval()方法那样产生安全问题,因为对象属性名只能是合法的标识符或者字符串。因此,在实际开发中,应当优先考虑将方法名作为对象属性名访问对象方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS根据变量保存方法名并执行方法示例 - Python技术站