gpt4 book ai didi

javascript - 让一个类成为 goog.events.EventHandler 和 goog.events.EventTarget

转载 作者:行者123 更新时间:2023-11-28 01:20:33 24 4
gpt4 key购买 nike

我有一个监听 DOM 元素上的事件的 View 类。它还会触发 Controller 监听的事件。

如何才能最好地与 Google Closure 的库配合使用?

这是我最好的镜头。

/**
* @constructor
* @extends {goog.events.EventHandler}
* @implements {goog.events.Listenable}
*/
var MyViewClass = function() {
goog.events.EventHandler.call(this);
goog.events.EventTarget.call(this);
};
goog.inherits(MyViewClass, goog.events.EventHandler);
goog.object.extend(MyViewClass, goog.events.EventTarget);

还有更好的办法吗?我的用例看起来很合理。是吗?

最佳答案

我在 Google Closure 库中发现了一个类,它可以做类似的事情:goog.events.FileDropHandler .

它既监听事件又触发事件。 source code的相关部分:

/**
* @constructor
* @extends {goog.events.EventTarget}
*/
goog.events.FileDropHandler = function(element, opt_preventDropOutside) {
goog.events.EventTarget.call(this);
this.eventHandler_ = new goog.events.EventHandler(this);
};
goog.inherits(goog.events.FileDropHandler, goog.events.EventTarget);

goog.events.FileDropHandler.prototype.disposeInternal = function() {
goog.events.FileDropHandler.superClass_.disposeInternal.call(this);
this.eventHandler_.dispose();
};

因此,它扩展了 goog.events.EventTarget,但处理程序是一个不同的对象。这似乎也遵循闭包库中其他类的模式。

<小时/>

我想我更喜欢使用 goog.Disposable 父类(super class)中的 registerDisposable 而不是覆盖 disposeInternal,但想法是相同的。

/**
* @constructor
* @extends {goog.events.EventTarget}
*/
var MyViewClass = function() {
goog.events.EventTarget.call(this);
this.handler = new goog.events.EventHandler();
this.registerDisposable(this.handler);
};
goog.inherits(MyViewClass, goog.events.EventTarget);

关于javascript - 让一个类成为 goog.events.EventHandler 和 goog.events.EventTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com