JavaScript文字对象在单独的文件中

时间:2017-11-01 09:34:31

标签: javascript oop ecma

说我有这种结构:

File1.js:

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

键盘-object.js:

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

小鼠-object.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(或{{1在我的情况下)在对象

3 个答案:

答案 0 :(得分:0)

您基本上是在这里的对象的自定义事件处理程序之后。我会看一下Backbone.js提供的那个。

答案 1 :(得分:0)

要知道您没有使用所描述的语法(如在)中为(先前声明的)myObject属性分配匿名函数:

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

你在这里做的实际上是标记匿名函数,单词“myObject.bindEvents”对你没有任何帮助。

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

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

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

稍后在您的脚本上

myObject.bindEvents();

答案 2 :(得分:0)

好吧我最终决定通过触发document上设置的事件来使用两个(或更多)单独的对象和触发器方法。

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

<强> myObject.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对象触发的事件。