2012-08-24 10 views
6

jQuery 1.9以降、a widget can inherit from itself。なぜこれが役立つのかという現実的な例は見つけられませんでした。率直に言って、自分自身から継承するアイデアは私の脳を壊してしまいます。この機能の目的は何ですか?この機能を使用して、以前にできなかったこと、またはこれまでずっと困難だったことは何ができますか?なぜjQuery UIウィジェットを自分自身から継承したいのですか?

答えて

1

in the slide you linked usこれはウィジェットを拡張する理想的な方法です」です。

これで、新しい「別の」ウィジェットオブジェクト(別名「別の名前」)を作成せずにウィジェットを拡張できます。機能を追加しても、まったく同じウィジェットオブジェクト名を使用できます。

// An incredibly contrived example 
$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
    if (confirm("Is it closing time?")) { 
     this._super("close"); 
    } 
    } 
}); 

私たちは一例でわかるように、その後、我々は、すでに存在ダイアログに表示されますダイアログオブジェクトに機能を追加することができ、すなわち、新しい「extendedDialog」を作成する必要はありませんし、 "extendedDialog"オブジェクトを使用するために既存のコードを変更します。代わりに、含まれている機能がすでに利用可能で、そこで動作します。

+0

JavaScriptにはクラスがありません;) – davidbuzatto

+0

JavaScriptには継承がありません! :-) –

+0

答えをありがとう。私が欠けていた重要な点は、特定のアプリケーションだけの異なるソースファイルで共有ウィジェットを拡張できることです。 C#の部分クラスのようなもの。今、完璧な意味合いがあります。 – RationalGeek

2

理由は、同じウィジェットを再定義することです。したがって、新しい機能を追加し、別のオブジェクトで拡張する必要はありません。ユーザーがクリック閉じるボタンでとあれば

$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
     if (confirm("Is it closing time?")) { 
      this._super("close"); 
     } 
    } 
}); 

上記のコードを実行した後、作成されるすべてのダイアログが確認メッセージをポップアップ表示されます:あなたが送信されたリンクで提示例で

彼はそれを受け入れる、それは閉じます。

1

これは、objective-cのカテゴリに似た機能を提供します。クラス/ウィジェットコード自体を変更したり、ソースにアクセスすることなく、クラス(ウィジェット)に機能を追加できます。

関連する問題