不能指出你的規格,但我強烈推薦閱讀Douglas Crockford's "Javascript: The good parts"。本書將幫助您理解JavaScript的大部分奇怪但強大的功能。
作爲你的問題:
- foo.bar(),在
bar
功能 this
關鍵字被綁定到對象foo
- (foo.bar)()是與上述相同,
在JavaScript中,您可以多次指定從右到左的變量
z = 3; x =(y = z); console.log(x); // 3
函數作爲其他任何變量。因此,您將函數foo.bar
分配給foo.bar
,但括號會使分配的函數返回並執行。
(foo.bar = foo.bar)();
//is the same as
var f = (foo.bar = foo.bar);
f();
//and this also the same as:
var f= foo.bar;
f();
該函數返回從括號沒有綁定到任何東西,所以this
將引用全局對象,在瀏覽器的情況下 - 在window
對象。
4。該條款(foo.bar,foo.bar)()僅僅是相似:
a = (3, 4); //last value is returned, first just parsed.
//a contains 4
var f = (foo.bar, foo.bar);
//f contains body of foo.bar function,
f() // is executed in the context of `global` object, eg. `window`.
請閱讀的JavaScript功能有關binding
。
在IE看來輸出是20,20,undefined,undefined .. – RameshVel 2010-02-19 09:57:05