2009-01-30 29 views
17

Javascript:Làm cách nào để chuyển nhiều đối số vào hàm gọi lại javascript? đang

function doSomething(v1,v2){ //blah; } 

function SomeClass(callbackFunction,callbackFuncParameters(*Array*))={ 
    this.callback = callbackFunction; 
    this.method = function(){ 
     this.callback(parameters[0],parameters[1]) // *.* 
    } 
} 

var obj = new SomeClass(doSomething, Array('v1text','v2text')); 

Vấn đề là nếu tôi thay đổi chức năng doSomething để

function doSomething(v1,v2,v3){ //blah; } 

tôi phải thay đổi dòng tương ứng (được đánh dấu là //*.*) trong SomeClass để

this.callback(parameters[0],parameters[1],parameters[2]); 

Có thể làm gì để tránh đường dây (*.*) thay đổi bất kể số lượng 'doSo thông số của hàm mething được thay đổi?

Cảm ơn rất nhiều!

Trả lời

22

Bạn có thể muốn sử dụng apply method

this.callback.apply(this, parameters); 

Tham số đầu tiên để áp dụng cho thấy giá trị của "này" trong khi gọi lại và có thể được thiết lập để bất kỳ giá trị.

+0

Hoạt động! Cảm ơn bạn. – Shawn

+1

Im một chút nhầm lẫn về cách sử dụng chức năng này. Những gì tôi muốn làm là chuyển một hàm vào một hàm gọi lại như thế này - hàm của tôi (hàm (myele) {// sử dụng myele}). Vì vậy, tôi đang đi qua một hàm gọi lại anon ở đây với tham số myele được truyền cho nó. Làm thế nào tôi sẽ làm điều này với mã của bạn ở trên? – Metropolis

Các vấn đề liên quan