私はカスタムjavascript EventManagerクラスを作成しようとしています。私はクラスを作成するために彼のeasel.jsフレームワークでGrant Skinnerの書式を採用し、それに固執する必要があります。私は本当にこの時点で失われています。少なくとも概念的な意味では、私はここに正しいアイデアがあり、それは主に私を回避する範囲の問題だと思います。カスタムJavascript EventManager - 完了を手助けしてください
私はここで誰かが、これをaddListenerとdispatchEventが機能するところまで持ち上げるのを助けてくれることを願っています。
[code]
(function(window) {
var EventManager = function() {
this.initialize();
}
var p = EventManager.prototype;
// place properties here
// Constructor
p.initialize = function() {
p.listeners = new Array();
}
// public methods
p.addListener = function(fn, event) {
console.log("p.addListener Hit");
console.log("event: " + event);
console.log("handler function: " + fn);
if(!this.listeners[event]) {
this.listeners[event] = [];
}
if(fn instanceof Function) {
this.listeners[event].push(fn);
}
return this;
}
p.dispatchEvent = function(event, params) {
console.log("Dispatch Event");
// loop through listeners array
for(var index = 0; index < listeners[ev].length; index++) {
// execute matching 'event' - loop through all indices and
// when ev is found, execute
listeners[event][index].apply(window, params);
}
}
p.removeListener = function(event, fn) {
// split array 1 item after our listener
// shorten to remove it
// join the two arrays back together
}
window.EventManager = EventManager;
}(window));
[/code]
[code]
<script>
eventManager = new EventManager();
var FooTest = function() {
this.fire = function() {
//alert("fire");
}
this.fire();
};
function onFire() {
// console.log("FIRED!");
}
var o = new FooTest();
eventManager.addListener.call("fire", onFire);
// eventManager.dispatchEvent.call(o,'fire');
</script>
[/code]
ありがとうございました!あなたのコードは、単にいくつかの小さな問題があちこちで働いていたほとんどの部分についてhttp://jsfiddle.net/JxYca/3/
:
listnersは配列としては無効ですが、ハッシュテーブルとして使用しています。 applyは配列を第2引数として取りますが、文字列を指定しています。なぜあなたはaddListenerで.callが必要ですか?今書いているように、あなたはこの機能の中でこれを「火」にしたいと思っています。あなたは非常に奇妙な方法でIIFEを使用している、あなたは一番上の関数を必要とすべきではありません。それ以外の場合は、コードが機能するはずです。 –
Ilya - IIFEとは何ですか?配列とハッシュテーブルを混乱させていただきありがとうございます。ここに必要な方法で、JavaScriptでハッシュテーブルをどのように宣言しますか?一番上の機能はまったく必要ないはずだと言ったら、どういう意味ですか?もう一度ありがとう:) –
私はこの質問がかなり古いことを知っていますが、私はカスタムイベントの生活をもっと楽にする小さな(1kb)ライブラリを書いています: ソースとAPIは私のブログポストで見つけることができます:http:// www .pointsoftware.ch/de/eventer-js-event-and-task-management-in-javascript / –