[解決済み] JavaScript: 関数をクローンする
2022-06-02 06:20:54
質問
JavaScriptで関数をクローンする一番早い方法は何でしょうか(プロパティ付きでもなしでも)?
思い浮かぶ2つのオプションは
eval(func.toString())
と
function() { return func.apply(..) }
. しかし、私はevalのパフォーマンスを心配し、ラップはスタックを悪化させ、おそらくたくさん適用したり、すでにラップに適用した場合、パフォーマンスを低下させます。
new Function(args, body)
はいい感じですが、JSでJSパーサーを使わずに既存の関数をargsとbodyに分割するのは具体的にどのように信頼できるのでしょうか?
事前にありがとうございます。
更新しました。 私が言いたいのは、以下のようなことができることです。
var funcB = funcA.clone(); // where clone() is my extension
funcB.newField = {...}; // without affecting funcA
どのように解決するのですか?
これを試してみてください。
var x = function() {
return 1;
};
var t = function(a,b,c) {
return a+b+c;
};
Function.prototype.clone = function() {
var that = this;
var temp = function temporary() { return that.apply(this, arguments); };
for(var key in this) {
if (this.hasOwnProperty(key)) {
temp[key] = this[key];
}
}
return temp;
};
alert(x === x.clone());
alert(x() === x.clone()());
alert(t === t.clone());
alert(t(1,1,1) === t.clone()(1,1,1));
alert(t.clone()(1,1,1));
関連
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
要素ツリー制御によるvueTreeテーブル
-
JSアレイループと効率解析の比較
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] GUID / UUIDの作成方法