我正在尝试理解以下代码块并且有点难过......特别是我对YAHOO.example.XHR_JSON =部分是什么感到困惑。看起来我们正在创建一个创建命名匿名方法的匿名方法?
YAHOO.util.Event.addListener(window, "load", function() {
YAHOO.example.XHR_JSON = function() { (blah blah blah) };
如果我尝试将YAHOO.exmaple.XHR_JSON更改为类似FooBar的东西,我会被告知没有定义foobar。
任何帮助总是非常受欢迎..
答案 0 :(得分:1)
XHR_JSON
只是YAHOO.example
对象的属性。您可以为此属性指定任何内容,包括函数。
如果您尝试了以下操作:
YAHOO.util.Event.addListener(window, "load", function() {
YAHOO.example.XHR_JSON = 'foobar';
});
..然后YAHOO.example.XHR_JSON
最终将被设置为'foobar'
,但只有在load
事件被触发后才会被设置为undefined
。这可能是您在检查值时获得{{1}}的原因。
答案 1 :(得分:0)
有两个匿名函数。第一个将YAHOO.example.XHR_JSON
设置为第二个匿名函数的值。这与定义命名函数不同。它只是将变量设置为另一个函数的值。这是推迟执行的一种方式。也许第二个例子会有所帮助:
var lightFuse = function() { bomb.actionToTakeIn30Seconds = function() { beep(); explode(); } }
答案 2 :(得分:0)
这似乎是产生混淆的一线
YAHOO.example.XHR_JSON = function() { (blah blah blah) };
这是将一个函数对象分配给XHR_JSON
上属性example
上的属性YAHOO
。
它本可以分开如下
var v1 = YAHOO.example
v1.XHR_JSON = function() { ( blah blah blah) };
答案 3 :(得分:0)
听起来你只需要先定义FooBar ......? e.g。
var FooBar = function() { alert("Foo"); }
var OtherFunction = function() {
this.myFunc = FooBar;
}
var instance = new OtherFunction();
instance.myFunc();
答案 4 :(得分:0)
var foo = funvtion(){... code ...};
与
几乎相同function foo() { ... code... };
代码的主要思想是在触发页面的“load”事件并建立所有DOM元素之后完成XHR_JSON assignemnt。