我刚刚浏览了pace.js的来源并遇到了以下函数,::
in
现在理解普通JS对我来说是一个挑战,但我仍然经历了函数中使用的独立组件和方法,但我真的无法弄清楚这个函数在插件中做了什么。
有人可以解释一下吗?如果你能给我一个真实但一般的想法,那就足够了。
此功能也可以独立于插件pace.js使用吗?我插件pace.js似乎是用纯粹的js编写的。
编辑:如果有人可以评论每条线路上发生的事情,那将是非常友好的,如果你使用的技术术语很好。我可以稍后参考mdn并了解一旦我知道每条线路上都隐约发生了什么。我理解JS方法以及与Web API有关的任何内容,MDN都有很好的文档,但我看到Evented.prototype.trigger = function() {
var args, ctx, event, handler, i, once, _ref, _ref1, _results;
event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if ((_ref = this.bindings) != null ? _ref[event] : void 0) {
i = 0;
_results = [];
while (i < this.bindings[event].length) {
_ref1 = this.bindings[event][i], handler = _ref1.handler, ctx = _ref1.ctx, once = _ref1.once;
handler.apply(ctx != null ? ctx : this, args);
if (once) {
_results.push(this.bindings[event].splice(i, 1));
} else {
_results.push(i++);
}
}
return _results;
}
};
的所有地方都让我感到困惑。
答案 0 :(得分:1)
您正在查看的代码是编译的coffeescript代码,查看原始代码可以更容易理解:
trigger: (event, args...) ->
if @bindings?[event]
i = 0
while i < @bindings[event].length
{handler, ctx, once} = @bindings[event][i]
handler.apply(ctx ? @, args)
if once
@bindings[event].splice i, 1
else
i++
Src:http://answers.unity3d.com/questions/133373/moving-object-in-a-ellipse-motion.html
它检查是否存在给定事件的绑定,然后遍历任何现有绑定并调用该事件的处理程序。