我希望用JavaScript动态创建方法...在ruby(见下文)中我们有define_method,我们在JavaScript中有类似的东西吗?
define_method 'name_of_the_method' do
'method code goes in this block'
end
答案 0 :(得分:2)
由于Javascript将函数视为第一类对象,因此您可以随时创建和分配它们。结合Function
构造函数,等效的是:
function define_method (target, name, code) {
target[name] = new Function(code);
}
在获取参数时它不是非常友好(它没有任何命名的参数),但会在对象上动态创建一个方法。
如果要将方法附加到该类型对象的每个实例,则应使用:
target.prototype[name] = new Function(code);
如果您提前使用该功能(无需动态编译),您只需使用动态名称和现有功能进行分配:
function define_method(target, name, fn) {
target[name] = fn;
}
因为Javascript将函数视为对象,所以您可以随时将它们分配给对象(类原型或实例)。