0

假设我有这个结构:

文件1.js:

var myObject = {
   bindEvents: function() {
     console.log('Root events binding');
   }
}

键盘对象.js:

myObject.bindEvents: function() {
   console.log('Keyboard events binding');
}

鼠标对象.js:

myObject.bindEvents: function() {
   // extends original bindEvents and adds more functionality 
   // right now this behavior overrides the original bindEvents method
   console.log('Mouse events binding');
}

如何触发myObject.bindEvents()并确保在每个文件中触发它?

我的目的是将一个大对象拆分为单独的文件,并创建一种方法来触发每个文件中的所有相应方法,如bindEvents应该在对象中触发bindEvents(或keyboardEvents在我的情况下)

4

3 回答 3

0

您基本上是在为这里的对象定制事件处理程序。我会看看Backbone.js提供的那个。

于 2017-11-01T09:56:23.487 回答
0

myObject请注意,您没有使用所描述的语法(如中)将匿名函数分配给(较早声明的)属性:

myObject.bindEvents: function() { console.log('Keyboard events binding'); }

你在这里所做的实际上是用“myObject.bindEvents”这个词来标记匿名函数,这对你没有任何好处。

我认为 - 除了这个错误 - 你正在尝试做这样的事情:

myObject.bindEvents = function() { console.log('Keyboard events binding'); }

只有现在你的 myObject 有一个属性方法,bindEvents你可以通过简单地声明来调用它:

myObject.bindEvents(); 稍后在您的脚本上。

于 2017-11-01T10:20:12.353 回答
0

好的,最终我决定使用两个(或更多)单独的对象并通过触发设置在document.

所以我目前的解决方案是这样的:

我的对象.js

var myObject = {
   bindEvents: function() {
     // some code here

     $(document).trigger('myObject:bindEvents');
   }
}

secondObject.js

var secondObject = {
   bindEvents: function() {
     // separate code and logic here
   }
}

$(document).on('myObject:bindEvents',function(){
   secondObject.bindEvents();
});

这使我可以灵活地添加更多单独的对象并将它们的方法绑定到由myObject对象触发的事件。

于 2017-11-01T13:15:31.957 回答