2010-06-14 60 views
0

重複訪問JavaScript語法我想問,如果有說明下面的代碼,因此我們可以反覆訪問同一個對象,而無需重新輸入對象的標識符的正式方式:的縮寫,以相同的標識符

myObj.render(1).render(2).print(); 

我在試圖形成問題時不知道如何描述它;我想知道在javascript中是否可以這樣做,我知道我可以在VB中做到這一點:

myObj.render(1) 
    if(foo == 'bar') 
     .render(2) 
    .print(); 

謝謝!

回答

3

您要查找的名稱是fluent interface ,您的第一個例子可以很容易地被實現這樣的:

var obj = { 
    render: function (arg) { 
    // do something here... 
    return this; // the key of chainability 
    }, 
    print: function() { 
    alert('print something...'); 
    } 
}; 

obj.render(1).render(2).print(); 

基本上render方法需要返回它所屬的對象實例中,爲了允許chainability

你想要做的條件是不可能的,你會有類似@musicfreak的建議。

+0

我不知道,我總是想知道jQuery是如何做到的。謝謝! – 2010-06-14 22:47:42

1

這裏就是我會去的:

var x = myObj.render(1); 
if(foo == 'bar') 
    x = x.render(2); 
x.print(); 

您還可能有興趣在with關鍵字,如:

var a, x, y; 
var r = 10; 
with (Math) { 
    a = PI * r * r; 
    x = r * cos(PI); 
    y = r * sin(PI/2); 
} 

更多細節大約可以發現here

+0

謝謝,只是修復它。 – 2010-06-14 05:40:14

3
var obj = myObj.render(1); 
if (foo == 'bar') 
    obj = obj.render(2); 
obj.print(); 
相關問題