OOP Javascript は初めてで、this
キーワードとイベントに問題があります。
私が達成しようとしているのは、複数の DOM オブジェクトがあり、それらに共通のイベントをバインドするだけでなく、前述のオブジェクトに関するデータをグローバル コンテナーに保持したい (実行時のパフォーマンスを向上させるため) ことです。
だから私がやっていることは基本的にこれです:
function ClassThatDoesSomething() {
/* keeps node ids for processing in this.init */
this.nodes = new Array();
/* keeps processed node data for fast access */
this.nodeData = new Array();
this.sthAddNodes = function(/* ids */) {
/* appends node ids to local variable (this.nodeData) */
}
function init() {
/* gathers data from all nodes that were
added before and stores it in this.nodeData */
/* here, unsurprisingly, 'this' references the window element*/
addEvent(window,'scroll',this.scroll);
}
function scroll() {
/* do stuff when user scrolls the page */
/* 'this' references the window element here too */
}
addEvent(window,'load',this.init);
}
後で、ドキュメントの本文に次のように追加できます。
var Ctds = new ClassThatDoesSomething();
さらに、次の方法で DOM 要素を追加します。
Ctds.addNodes(ids);
これ以上の実装コードは必要ありません。
質問: window 要素ではなくおよびメソッドでJS クラス インスタンスにアクセスする。init
scroll
キーワードである必要はありませんがthis
、それでも何も思いつきませんでした。
PS
addEvent
イベントをアタッチするための非常に基本的な関数です。IE/Fx に適しているだけで、他には何もしません。- 私が書いているコードはすでに機能していますが、手続き型の形式で、OOP したかっただけです。
- マイナーなサブ質問として、getter/setter メソッドは javascript では推奨されていないという印象を受けましたが、使用しても問題ありませんか?