2011-09-27 31 views
10

tôi có một đối tượng:Tôi làm cách nào để kết nối các cuộc gọi phương thức của mình?

var mubsisapi = { 
     step1 : function(){alert("a")}, 
     step2 : function(){alert("b")} 
    } 

$.extend(false, mubsisapi) 
mubsisapi.step1().step2(); 

Nó là cung cấp cho step1() nhưng không đưa ra step2(). step2() không đưa ra cảnh báo. Tôi có thể làm cái này như thế nào?

+0

Đã chỉnh sửa để xóa tham chiếu đến JSON… mà bạn hiện không sử dụng. – Quentin

Trả lời

15

Không phải JSON, nhưng đối tượng javascript. Nó không phải là fluent, nhưng có thể là:

var mubsisapi = { 
     step1 : function(){alert("a"); return this;}, 
     step2 : function(){alert("b"); return this;} 
    } 

$.extend(false, mubsisapi) 
mubsisapi.step1().step2(); 
9

Bạn cần trả lại this từ hàm nếu bạn muốn chuỗi.

+0

+1 đánh bại tôi với nó :) – AlienWebguy

+0

+1, hôm nay tôi quá chậm – Joe

1

Bạn không thể thực hiện các cuộc gọi chức năng của mình. Bạn có thể phải gọi cho họ cách riêng biệt:

mubsisapi.step1(); 
mubsisapi.step2(); 

hoặc bạn có thể thay đổi chức năng bước 1 để bạn có thể chuỗi chúng:

var mubsisapi = { 
     step1 : function(){alert("a"); return mubsisapi;}, 
     step2 : function(){alert("b")} 
    } 

$.extend(false, mubsisapi) 
mubsisapi.step1().step2(); 
+0

Sai :) Xóa trước khi bạn được giảm hạng. – AlienWebguy

+0

Cảm ơn mọi người –

3

Vâng, đối tượng của bạn sẽ trông như thế này:

var mubsisapi = { 
    step1 : function(){alert("a"); return this; }, 
    step2 : function(){alert("b"); return this; } 
} 

tự trả về để cho phép chuỗi.

2
var mubsisapi = { 
     step1 : function(){alert("a"); return mubsisapi;}, 
     step2 : function(){alert("b"); return mubsisapi;} 
    } 
Các vấn đề liên quan