2012-01-21 10 views
2

この質問はほとんど学問的興味から外れています。私のYUI 3インスタンスはどこに住んでいますか? (プラスいくつかのYUIイベントの観察)

今日はYUI 3を使い始めて、サンドボックスのコンセプトを見つけました。 DOM内で(登録されたイベントハンドラのような)いくつかのオブジェクトを徹底的に見つけようとしたら、私はあきらめなければなりませんでした。私はちょうどそこに終わるインスタンスオブジェクトを見つけることができませんでした。

私はクロージャをほとんどカバーしていると思います。たとえサンドボックスが大きく依存していても、少なくともイベントハンドラのような部分には少なくとも1つの可視参照がなければならないでしょう(そうでなければ誰も何もアクセスできず、その時にある時点で収集されたガベージ)、そうですか?

  1. DOM内のYUIインスタンスはどこにありますか(グローバル変数に割り当てることはできません)?
  2. サンドボックスされたYUIオブジェクト、またはDOM内に居住するサンドボックスされたYUIオブジェクトやその一部は、

具体例(具体的には少し話題外です)を例に挙げてみましょう: YUIウィジェットとイベントが添付されたYUIノードオブジェクトがあります。これらのNodeオブジェクトは、DOMノードをラッピングしています。 DOMを検査すると、ラップされたノードにはオブザーバがありません。

  • ノード内に何も配線されていない場合、Nodeオブジェクトにアタッチされたイベントはどのようにトリガされますか? YUI 3と

答えて

1

のみ表示参考文献はYUIによって割り当てられYUIグローバルオブジェクトと時折要素idあります。イベントサブスクリプションは、ネイティブaddEventListenerまたはattachEvent(マークアップの証拠は残さない)またはinnerHTMLで行われます。ただし、この方法でサブスクリプションを表示できる開発ツールがいくつかありますが、YUIサブスクリプションが表示されます。

DOM内にYUIインスタンスが見つかりません。それがサンドボックス化のポイントです。グローバルにアクセス可能な変数やプロパティ、またはグローバルにアクセス可能な変数に明示的に割り当てない限り、YUIのインスタンスはDOMレイヤではなくJavaScriptレイヤ(技術的にはECMAScriptレイヤ)に存在します。

+0

あなたの答えをありがとう、これは本当にそれにいくつかの光を出す!このES層が存在することを知らなかった(グローバルオブジェクトとは別に、 'Date'、' RegExp'、 'eval'などの' window'と並行して)ANDを使用してユーザーのものを永続させることができます。 'addEventListener'などで添付されたイベントは、DOMでも終わるだろうと考えました。私があなたを得たならば、このレイヤーは前述のオブジェクトと 'addEventListener'のようなものを通してしか公開されません。 **非グローバルなYUIインスタンスは、DOM以外のイベントリスナー内にのみ有効に存在しますか?**おかげさまで、Christian – pong

関連する問題