2015-12-15 59 views
0

在一個原型方法我有這樣的代碼:如何將變量傳遞給事件中的構造函數方法?

DragDrop.prototype.startDrag = function() { 
// ... other code 
    this.mouseMove = this.drag.bind(this); 
    ... 

的.bind只是所以我可以指從我請(this.drag)的功能的對象。

(事件不能是匿名函數,因爲我需要後來不然我會永遠被拖動刪除...)

... 
window.addEventListener('mousemove', this.mouseMove, false); 
} 

然後這是我使用上述功能。這在Safari和Chrome中都可以正常工作,但在Firefox中未定義。

這是如何解決的?

作爲一個方面說明,我是新來的構造函數,並希望知道是否有另一種方法來做到這一點/沒有綁定。在理想的世界中,我想將更多的變量傳遞給.drag函數。

+0

你是什麼意思「*我想將更多的變量傳遞給.drag函數。*」你不應該只使用實例屬性嗎? – Bergi

+0

爲所有事情使用實例屬性是否更好?我只是想能夠返回函數中的值來減少這些:http://imgur.com/8ShLB4S。 是否可以將參數傳遞給綁定(綁定?!)函數? –

+0

對編碼實例狀態的所有內容使用實例屬性。沒有很多變數,但我不確定你所指的是什麼。你可以更具體一點*你想傳遞什麼*變量?不,事件處理程序不能有返回值。 – Bergi

回答

1

event是一些全局變量,在某些實現中由於遺留原因(由IE啓動的不好的練習)。它實際上應該是事件處理程序的參數,但:

DragDrop.prototype.drag = function(event) { 
//         ^^^^^ 
    console.log(event); 
} 

注意,這已經無關bind荷蘭國際集團的功能,事件處理程序也不會要麼工作綁定。

+0

非常好,謝謝! –