1

以下のコードを使用したExtJsのチュートリアルを見ました。

 var myDiv = Ext.get('myDiv');
 myDiv.highlight();   

hightlight()関数はどこから来ましたか?ネイティブのJavascriptまたはExtJsフレームワークからのものですか?簡単な検索を行いましたが、APIドキュメントで見つかりませんでした。hightlight()がExtJsフレームワークからのものである場合、実際にはJavascriptのネイティブの動作をどのように上書きしますか?

では、Jqueryセレクター、たとえば$('#myDiv')Javascriptでどのように認識できるのでしょうか。$('')記号はJavascriptコンパイラで認識されるべきではありませんか?

私の説明はかなり貧弱です、申し訳ありません。私はJavaScriptの初心者です。

4

2 に答える 2

2

Prototype、Extなどは、DOMオブジェクトのプロトタイプを拡張し(ちなみに、これはかなり疑わしい動作です)、たとえばHTMLElement.prototype、独自の関数を追加します。これにより、例に示すようにそれらを呼び出すことができます。

jQueryhoveverは魔法をまったく使用しません。$通常の文字と同じように、JavaScriptの通常の識別子です。したがって、これ$は、実行時に呼び出す名前付きの関数に他なりません$('#selector')。その関数の戻り値は、通常、配列のように動作し、多数の便利なメソッドを持つjQueryオブジェクトです。したがって、ネイティブDOMオブジェクトを処理することはなく、1つ以上のオブジェクトを含むオブジェクトのみを処理します。

于 2012-12-25T13:41:34.970 に答える
2

ExtはElementオブジェクトを提供します。これは、のような呼び出しによって返されるものExt.get()です。ElementはDOMノードをラップしますが、(jQuery $関数のように)HTMLElementオブジェクトを変更しないことは間違いありません。実際、Element.domプロパティは、変更されていない元のDOMノードを公開します。 Element.highlight()は単なるExt.Elementメソッドであり、APIドキュメントに明確に文書化されています-不思議なことは何もありません。

Extは以前のバージョン(日付、文字列、オブジェクト)で一部のネイティブJSオブジェクトを変更するために使用されていましたが、ネイティブHTMLElementオブジェクトに触れたことはありません。これは、ほとんどのJSライブラリで一般的な方法でしたが、バージョン4.0(数年後)の時点では、ExtはネイティブJSプロトタイプに触れていません。

于 2012-12-26T05:00:31.633 に答える