JavaScript実装メソッドのリロード
1205 ワード
JavaScript実装メソッドのリロード
JSオリジナルではメソッドのリロードはサポートされていませんが、同じ名前のメソッドが2つ定義されている場合は、常に最後の定義を実行します.しかし、オリジナルがサポートされていないのは実現できないわけではありません.結局、JSは柔軟な動的言語です.次のように考えられます.判断パラメータリスト長 閉包特性 を利用する.
1.パラメータリスト長の判断
サンプルコード:
2.閉包特性の利用
JQueryの父John Resigの本『Secrets of the JavaScript Ninja』(中国語訳名:JavaScript忍者秘籍)では、閉パッケージ特性を利用する方法が提供されている.
サンプルコード:
転載を歓迎して、転載して出典を明記してください:https://blog.kaguramea.me/archives/js-method-overload
JSオリジナルではメソッドのリロードはサポートされていませんが、同じ名前のメソッドが2つ定義されている場合は、常に最後の定義を実行します.しかし、オリジナルがサポートされていないのは実現できないわけではありません.結局、JSは柔軟な動的言語です.次のように考えられます.
1.パラメータリスト長の判断
サンプルコード:
function overload() {
if (arguments.length === 1) {
// TODO
}else if(arguments.length === 2){
// TODO
}
}
2.閉包特性の利用
JQueryの父John Resigの本『Secrets of the JavaScript Ninja』(中国語訳名:JavaScript忍者秘籍)では、閉パッケージ特性を利用する方法が提供されている.
サンプルコード:
/**
*
* @param object
* @param name
* @param fn , , length length+1
*/
function overloadMethod(object, name, fn) {
const old = object[name];
object[name] = function () {
if (fn.length === arguments.length) {
return fn.apply(this, arguments);
} else if (typeof old === 'function') {
return old.apply(this, arguments);
}
};
}
転載を歓迎して、転載して出典を明記してください:https://blog.kaguramea.me/archives/js-method-overload