Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js如何实现事件?_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js如何实现事件?

Javascript Backbone.js如何实现事件?,javascript,backbone.js,Javascript,Backbone.js,澄清: 我只针对支持createEvent、addEventListener等的现代浏览器 问题 我的意思是,在JavaScript中。搜索显示他们没有使用createEvent() 我在这里寻找答案,但没有找到任何答案 我在中搜索了createEvent(),但没有找到 主干如何从本地语言的角度实现事件 他们在用电话吗 如果JavaScript已经有自定义事件(通过createEvent())可用,并且事件监听器也可用(addEventListener()),为什么不使用内置事件?主干就可以了

澄清:

我只针对支持createEvent、addEventListener等的现代浏览器

问题

我的意思是,在JavaScript中。搜索显示他们没有使用
createEvent()

我在这里寻找答案,但没有找到任何答案

我在中搜索了
createEvent()
,但没有找到

主干如何从本地语言的角度实现事件

他们在用电话吗

如果JavaScript已经有自定义事件(通过
createEvent()
)可用,并且事件监听器也可用(
addEventListener()
),为什么不使用内置事件?

主干就可以了。它包含163行代码,计算空格和注释

阐明如何

  • 一些基本的东西,如用于拆分事件名称的regex、作为简单对象文本的绑定侦听器的简单注册表
  • 打开|绑定
    关闭|解除绑定
    触发器
    一次
    列表
    停止监听
至于为什么,这是基于作者和贡献者做出的设计决策,他们认为这符合项目的目标和风格。鉴于主干模型、集合和视图使用的常见模式,名称空间和多事件绑定非常方便

是的,它们使用的是观察者模式。所有基于事件的系统都包含观察者模式的实现。广义上讲,事件、发布/订阅和观察者是同义词,尽管有些人可能会发现在详细讨论时区分它们很重要。

主干网为什么不使用本机事件? 将本机事件用于主干视图之外的任何内容都没有意义。主干为

本机事件(通过
createEvent
addEventListener
)绑定到DOM节点。模型和集合与DOM节点没有关联-您必须跳过许多不必要的障碍才能重用该代码

主干事件是否遵循观察者模式? 不完全是这样。
主干。Events
更接近。对象维护命名事件的事件侦听器列表(通过
on
),然后该对象在想要触发事件时通过
trigger
触发对这些侦听器的调用

主干网活动是如何实施的? 主干网的核心是为每个事件维护一个事件监听器数组(在旧版本的主干网中,它使用一个链表;这要慢一些)。每个对象维护自己的监听器列表;没有中央注册表


trigger
上,主干调用为该事件注册的所有侦听器;它还调用特殊情况下的所有侦听器
all
事件。

dood,只需搜索“events”在您链接到的源代码中。在那里有很好的文档记录。请尽快关闭此问题。因为内置事件不是跨浏览器的。首先,然后,第二个主干事件类做一些内置事件不做的事情(名称空间等…)一些使用主干的人不是。关于你刚才删除的问题,你是误解了提升。只有变量声明被提升,而不是赋值。所以做
*你的IIFE*;var SCommon={…};
实际上等同于
var SCommon;*你的IIFE*;SCommon={…}
。请注意,尽管吊装,但
SCommon
的值是如何
未定义的
。我只是想让您知道。@pure_-code我不是“off-on-tangent”,我只是试图解释代码失败的原因。当您计算
this.S.Common.cacheElements(this.E)时;
,this.S.Common的值未定义。之所以如此,是因为
this.S.Common==SCommon
,而
SCommon
未定义。我在前面的评论中解释了为什么
SCommon
未定义。但有什么好处?DOM节点不是免费的;您将引入大量内存再次强调,跳过所有这些障碍的好处是什么?基于DOM的事件管理一系列主干网没有用处的不必要行为(冒泡、取消)。创建事件对象很难。等等。另外,主干网的事件实现是本机事件。是的,请看一下我之前评论中的js perf链接。注意,两个实现的速度都一样快。jQuery的版本-是的,如果“有趣”是指“故意使用相同的函数名”.Backbone对
$的使用。ajax
也有一些jquery的连接。它们遵循jquery和,是的,设置的模式。最好有一个一致的界面-对任何选择Backbone的人来说都不太奇怪!