मॉर्निन 'सब।jQuery के लिए प्रोटोटाइप कोड (बाइंड (यह) बनाम बंद)
मैं एक JQuery प्लगइन करने के लिए एक प्रोटोटाइप कोड पुनर्लेखन कर रहा हूँ और कैसे इस टुकड़े को संभालने के लिए पता नहीं है:
this.observers = events.map(function(name) {
var handler = this["on" + name.].bind(this);
this.element.observe(name, handler);
return { name: name, handler: handler };
}.bind(this));
मैं के साथ समाप्त हो गया:
this.observers = $.each(events , function(i, name) {
var handler = "on"+name;
$element.live({
name: handler
});
}
मैं पूरी तरह गलत हूँ ? मैं अच्छी तरह से प्रोटोटाइप बांध() उद्देश्य समझ में नहीं आता है।
मदद के लिए धन्यवाद!
संपादित करें: कि के संदर्भ एक प्लगइन init() फ़ंक्शन मैं कहाँ देते हैं "गतिशील" घटनाओं और उनके हैंडलर निजी तरीकों के रूप में कोडित ...
plugin.init = function() {
// the plugin's final properties are the merged default and user-provided options (if any)
plugin.settings = $.extend({}, defaults, options);
if (!plugin.observers) {
var events = ("mouseover mouseout").split(" ");
plugin.observers = $.map(events, $.proxy(function(name) {
var handler = $.proxy(this['on' + name], this);
$element.bind(name, handler);
return { name: name, handler: handler };
}, this));
}
console.log(plugin.observers);
}
प्रोटोटाइप का फ़ंक्शन.बिंड() jQuery.proxy() के अनुरूप है, दोनों बारीकी से ECMAScript 5 Function.bind() से मेल खाते हैं लेकिन अंतर फ़ंक्शन हस्ताक्षर में है। बांध का उद्देश्य एक समारोह को वापस करना है जहां यह 'एक विशिष्ट वस्तु से जुड़ा हुआ है। – gonchuki