2010-06-14 52 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(); 
相关问题