ある JavaScript オブジェクトから別の JavaScript オブジェクトにいくつかのメソッドを委任したいと考えています。そこで、メタプログラミングを使用して、いくつかのメソッドをデリゲートとして定義しないようにすることを考えました。これまでのところ、私はこの方法で終わりました:
function delegate_to(_method, _obj) {
return function(_args) { // One parameter, what's about multiple parameters?
return _obj[_method](_args)
}
}
したがって、サンプルコードとして、それがどのように機能するか:
var that = {}
var delegate = {}
that.foo = function(_message) { console.log("foo: " + _message) }
that.bar = function(_message) { console.log("bar: " + _message) }
that.baz = function(_message) { console.log("baz: " + _message) }
function delegate_to(_method, _obj) {
return function(_args) { // One parameter, what's about multiple parameters?
return _obj[_method](_args)
}
}
['foo', 'bar', 'baz'].forEach(function(method) {
delegate[method] = delegate_to(method, that)
})
delegate.foo('Hello JS') // foo: Hello JS
delegate.bar('Hello JS') // bar: Hello JS
delegate.baz('Hello JS') // baz: Hello JS
コードは機能しますが、複数のパラメーターを持つメソッドを委任したい場合はどうすればよいですか? n
パラメータはどうですか?任意の数のパラメーターを持つようにコードを変更することは可能ですか? これはどのブラウザーでも実行されますか?
よろしく、ライナー