0

javascript オブジェクトについて少し混乱しています。以下に DOM があるとします。

<div class='of'></div>
<div class='of'></div>
<div class='of'></div>
<div class='of'></div>

 //select all of them 
  var fof = $('.of')

つまり、fof は 4 つの DOM オブジェクトを持つ配列ですよね? fof を JavaScript オブジェクトとして扱い、次のようなメソッドを定義できますか。

fof = {
  open:function(){

   }
 }

また、fof の「アクション」を定義することは可能ですか? click dblclick のように、「アクション」が発生すると (イベント ハンドラーのように)、何らかのメソッドを呼び出します。ハードコーディングの安定

fof.click(function(){

})

どうやってやるの?

4

2 に答える 2

1

よし、まずは基本。Javascript では、関数はファースト クラス オブジェクトです。つまり、次のことができます。

var foo = function() { return 1 + 1;};

あなたができるのと同じ方法:

var foo = 5;

Javascript では、すべての真のオブジェクト (プリミティブを除くほぼすべて) にプロパティがあります。これらのプロパティは、変数に設定できる任意のものに設定できます。

var foo = {};
foo.bar = function() { return 1 + 1; }
foo.baz = 5;

オブジェクトでメソッドが使用されているのを見るときはいつでも、プロパティとして設定された関数が実行されているだけです。

jQuery の結果オブジェクト (例: $('.of')) は単なる配列ではありませんが、Javascript オブジェクトであるため、プロパティを持つことができ、それらのプロパティは関数にすることができます。だからあなたは絶対にできる:

var fof = $('.of')
fof.foo = function() { return 1 + 1; };
fof.foo();

最後に、jQuery に似た独自のイベントの作成について質問されました。これは、jQuery を使用すると非常に簡単に実行できます。簡単な例を次に示します。

var fakeObject = {};
fakeObject.fakeMethod = function() {
    // do something 
    $.trigger(this, 'myFakeClick');
}

var fakeObjectWatcher = {}
fakeObjectWatcher.react = function() { alert('someone did something'); };
$(fakeObject).on('myFakeClick', fakeObjectWatcher.react);

fakeObject.fakeMethod(); // triggers myFakeClick event
// fakeObjectWatcher will now alert "someone did something"
于 2012-07-13T05:03:43.903 に答える
0

申し訳ありませんが、その最後の答えはちょっと短いものでした。jqueryを使用していると思います。
これをあなたの:に含めない場合

イベントの添付は、ドキュメントの準備ができているセクションで行うのが最適です。これを挿入することもできます。つまり、これはすべてがどのように見えるかです。

$(document).ready(function() {
    ($'.of').click(function () {
        $(this).do something or function($this) 
    });//end click
});//end ready

ループしてすべての.ofに何かを実行したい場合は、... $('。of')。each(function(){//何かを実行});

ここでは無名関数についてあまり心配する必要はありません。必ず使用してください。「無名関数」、「ラムダ式」、または「関数型プログラミング」でのグーグル検索が何であるかについての理論が必要な場合は、しばらく忙しくする必要があります。

于 2012-07-13T05:15:53.343 に答える