2

まずすみません。これは質問が有効かどうかわからないためです。誰かが私の疑いを晴らしてくれたら、私は幸せです。

基本的に:次のようなメソッドを呼び出すことの違いは何ですか:

  1. object.methodname();

  2. $('#element').メソッド名();

両方の方法を呼び出すことは機能していますが、どの基準が最初のタイプと2番目のタイプのメソッドを作成するかの違いは何ですか。コアのjavascriptでも利用できますか?

関数がある場合、常に2種類のメソッド呼び出しを行うことができますか?

正しく理解するための良い参考になる人はいますか?

前もって感謝します。

4

2 に答える 2

2

最初の構文:

object.methodName();

methodName()のプロパティとして定義されている関数 を呼び出すように指示しますobject

2 番目の構文:

$('#element').methodname();

$()(これが機能するために)オブジェクトを返さなければならない呼び出された関数を呼び出し、次にmethodname()その返されたオブジェクトを呼び出すように言います。

あなたは「双方向の呼び出しが機能している」と言ったので、おそらく次のようなコードがいくつかあります。

var myObject = $('#element');
myObject.methodname();

関数の結果を変数に格納するというこの概念は、$()一般に jQuery オブジェクトの「キャッシュ」と呼ばれます。jQuery 関数を呼び出すたびに$()別の jQuery が作成されるため、そのオブジェクトで多くのメソッドを呼び出す場合は、より効率的です。物体。

「コアの JavaScript でも利用できますか?」はい、オブジェクトを返す関数を実装する場合。つまり、JS はこれをサポートしています (jQuery は単なる JS ライブラリであるため、そうする必要があります) が、自動的には行われず、適切な関数コードを作成する必要があります。例えば:

function getObject() {
   return {
      myMethod1 : function() { alert("myMethod1"); return this; },
      myMethod2 : function() { alert("myMethod2"); return this; }
   };
}

getObject().myMethod1().myMethod2();

私の意見では、この概念をより深く説明することは、スタック オーバーフローの回答の範囲を超えています。いくつかの JavaScript チュートリアルを読む必要があります。MDN の Working With Objects記事は、JS の基礎を学んだ後に始めるのに適した場所です (オブジェクトを扱うことは JS の基礎であると主張することもできます、明らかにそれよりもさらに基礎的なことを意味します)。

于 2012-06-29T05:35:21.130 に答える
1

違いは非常に微妙です。

object.methodname();

これは、JavaScript が手元にオブジェクトを持っているときです。

$('#element').methodname();

jQuery を使用している場合は、jQuery に の ID を持つオブジェクトを選択するように求めています#element。その後、選択したオブジェクトでメソッドを呼び出します。

于 2012-06-29T05:35:38.477 に答える