【发布时间】:2013-02-26 23:17:07
【问题描述】:
我正在通过剖析我以前使用过的其他人编写的一些脚本来学习 javascript(* 对此至关重要!)。这段代码(我从中间剪掉了很多,以使代码更易于阅读,所有 cmets 都是我的)来自 fullCalendar.js,一个 jquery 插件。
我不确定作者在这里做什么:
function EventManager(options, _sources) { //called using .call()
var t = this;
t.isFetchNeeded = isFetchNeeded; //?? assign the function "isFetchNeeded" to the variable (not the value returned by the function)??
var trigger = t.trigger; //?? namespace??
}
function View(element, calendar, viewName) {
var t = this;
function trigger(name, thisObj) {
return calendar.trigger.apply(
calendar,
[name, thisObj || t].concat(Array.prototype.slice.call(arguments, 2), [t])
);
}
}
首先,我的猜测是this.foo=bar 将函数“bar”分配给当前对象中名为“isFetchNeeded”的变量(还不知道为什么要这样做。速度?)。
其次,var foo=this.bar 这条线让我很困惑。看起来这可能是一些命名空间的魔法。
我对第一行的思考是否正确?下一行在做什么?
谢谢
【问题讨论】:
-
老实说,你需要一个好的 Javascript 入门,但并不完全。让我在 10 分钟内向你推荐 Spencer Tippings 的 Javascript
-
javascript 中没有“命名空间”,只有对象属性。您需要将它们与变量区分开来。
-
@Bergi:你是对的,当然。我在想“范围”,但写了“命名空间”
-
@NannuoLei:感谢您的参考。它看起来确实是一个很好的资源。
标签: javascript function var