![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
javascriptにおいて、無名関数を合成する方法を知っている方はいらっしゃるでしょうか?
var func1 = function(){
alert('func1');
}
var func2 = function(){
alert('func2');
}
この二つの関数を合成して、
var func3 = function(){
alert('func1');
alert('func2');
}
という風に合成したいのです。
jQueryを利用して
var func3 = $.extend(func1, $func2);
と試しましたが、func3 == func1 となってしまうようです。
また、単純に、var func3 = func1 + func2; では、
func3 = function(){alert('func1');}function(){alert('func2');}
と意味を成さないものになってしまいます。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
ANo5です。
連投失礼。>実行時エラーなどは発生していないことは確認済みです。
実行時にエラーが出なければ、正しく処理されているということで、問題ないはずではないですか?
単純に、関数が渡されていないとか、あるいは、UIdialogの引数指定が違っているとか…(←これに関しては、知りませんので不明です。)
No.5
- 回答日時:
ANo4です。
デバッガを使っていらっしゃるのであれば、
click: function(){ callback(); closeFunc(); }
とした時にどこで止まっているかやエラーの原因等を特定できると思いますが、構文エラーやcallbackのタイプエラーではなく、違うことが原因となっているのではないのですか?
どうも、ご質問なさっていることの他に原因がありそうに思います。
No.4
- 回答日時:
ANo3です。
>そのコードは検証済みですねぇ。
単に、動作しないことから「合成できていない」と判断していませんか?
これまた想像ですが、合成の問題ではなく、関数の実行時にエラーがでている可能性が高そうなきがします。
ANo3にも書きましたが、thisの値などを再チェックしてみてはいかがでしょうか。
この回答への補足
もちろんFireBugなどのツールやデバッガを利用して実行時エラーなどは発生していないことは確認済みです。
object Function.prototypeなどの値もダンプしたうえでの話なので・・・。
$(this)は$("#dialog-confirm")等価ですので、$("#dialog-confirm")に置き換えた上での実行も検証済みです。そしてまた、そこが動作の結果に関わっていないことも検証済みです。
No.2
- 回答日時:
A No1です。
jQuery UIdialogの仕様はぞんじませんが、
>一つ目の関数(func1)はui dialogの外から、func2は関数の定義の中で
との内容から想像するところ、無名関数や関数合成の問題ではなく、関数(変数)のスコープの問題ということではないでしょうか。
多分、合成しようとするのではなく、func1を参照可能なように工夫すればよろしいのではないでしょうか。
この回答への補足
参照可能なように、引数で渡しています。
具体的にコードを見ていただくと一番いいと思いますので、下に示します。
目的はconfirm()をjQueryUiDialogでオーバーライドするのが目的です。
window.confirm = function(str, callback){
if (0 == $("#dialog-confirm").length) {
var closeFunc = function(){$(this).dialog( "close" );}
$("body").append("<div id=\"dialog-confirm\"><p></p></div>");
$("#dialog-confirm p").html(str).parent().dialog({
modal: true
, buttons: [
{
text: "OK",
click: closeFunc
}
, {
text: "キャンセル",
click: closeFunc
}
]
});
}
$("#dialog-confirm").children("p").html(str).end().dialog('open');
}
ここで問題になっているのが、引数のcallbackとcloseFuncを「OK」ボタンのクリック時に実行したいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- 工学 Pythonの3次元描画に関する質問です 3 2022/12/07 20:07
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Ruby 教えてください 2 2023/01/04 17:50
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- UNIX・Linux gawk 3 2022/08/18 14:07
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
functionから別のfunctionを実...
-
XMLHttpRequestでキャッシュを...
-
ActiveXobjectが作成できない
-
二次元配列を使って順位をだす...
-
乗換案内 VBAで操作したい
-
javascriptの基本的なことだと...
-
window.openでタイトル名の指定
-
Boolean型配列中のTrueの有無を...
-
JavaScriptで、現在日時から100...
-
同じIDで定義した要素の配列を...
-
Googleスプレッドシートとスク...
-
DOM要素を削除しても、イベント...
-
【Tabキー】特定の範囲内だけで...
-
Javascriptで定期的にF5を押す...
-
<a>タグのテキストを取得
-
Click回数を数え、規定された回...
-
『名前空間』の意味を教えてく...
-
JavaScriptでの動的な多次元配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
jslintのエラーについて質問
-
要素名がスペースを含む場合のj...
-
javascript(jQuery)でセル内...
-
ajax反映後のjqueryが動かない
-
jQueryの :not() .not() が有効...
-
getElementByIdを使用したグロ...
-
コードをスマートにさせたい。
-
クリックすると上に開くアコー...
-
jQueryの"return false"の役割...
-
jQueryが読み込めない
-
個別では動く、javascriptのエラー
-
一つのアクションで関数を二つ...
-
jqueryの変数を関数の外に出す方法
-
R言語
-
jQuery|:not(:animated)
-
即時関数でプライベート変数的...
-
スムーズに動く アニメーション...
おすすめ情報