के साथ अज्ञात संख्या के तर्कों के साथ एक जावास्क्रिप्ट फ़ंक्शन को कॉल करना मैं वर्तमान में फ़ंक्शन का उपयोग कर रहा हूं। एक क्रिया को गतिशील संख्या के साथ फ़ंक्शन कॉल करने के लिए, लेकिन मेरे पास मूल संदर्भ तक पहुंच नहीं है, और कोई इच्छा नहीं है खुद को संदर्भ सेट करने के लिए। मैं क्या चाहता हूं, मूल संदर्भ को ध्यान में रखते हुए तर्कों की एक चर संख्या के साथ एक समारोह को कॉल करने में सक्षम होना है।मूल संदर्भ
शायद कुछ कोड आप दिखाना चाहिए कि मैं क्या करने की कोशिश कर रहा हूँ:
function MulticastDelegate() {
var handlers = [];
this.event = {
subscribe: function(handler) {
if (typeof(handler) === 'function') {
handlers.push(handler);
}
},
unsubscribe: function(handler) {
if (typeof(handler) === 'function') {
handlers.splice(handlers.indexOf(handler),1);
}
}
}
this.execute = function() {
var args = Array.prototype.slice.call(arguments);
for (var handler in handlers) {
// call this with the original context of the handler
handlers[handler].apply(null, args);
}
}
}
अनिवार्य रूप से, मैं apply
के व्यवहार चाहते हैं - तर्क की एक सरणी से पारित करने की क्षमता - call
के व्यवहार के बिना - बदल रहा है संदर्भ जिसके तहत एक समारोह निष्पादित करता है।
मुझे लगता है कि तुम यहाँ का वर्णन एकदम वही है जिसे Backbone.js इसकी घटना बंधन ढांचे में करता है: http://documentcloud.github.com /backbone/docs/backbone.html#section-12 – nrabinowitz
@nrabinowitz हाहा! जीएमटीए :) –
मुझे लगता है कि आप 'var self' विधि या इसी तरह के कुछ का उपयोग करके, कॉलर को उस संदर्भ का ख्याल रखने के बारे में सही हैं, जिसके तहत इसे निष्पादित किया गया है। फिर मैं 'इस' के लिए एक और उपयुक्त वस्तु प्रदान कर सकता हूं। –