में एक लाइन का स्पष्टीकरण एमडीएन बाइंड पॉलीफिल नीचे दिखाया गया है।एमडीएन बाइंड पॉलीफिल
मैं fToBind.apply
मंगलाचरण में
this instanceof fNOP ? this : oThis
के प्रयोजन के बाहर काम करने की कोशिश कर रहा हूँ।
मैं इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता। क्या कोई कुछ प्रकाश डालने में मदद कर सकता है?
Function.prototype.bindMdn = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1)
, fToBind = this
, fNOP = function() {}
, fBound = function() {
return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
}
;
if (this.prototype) {
// Function.prototype doesn't have a prototype property
fNOP.prototype = this.prototype;
}
fBound.prototype = new fNOP();
return fBound;
};
यह अगर बाध्य समारोह का एक उदाहरण है जब बाध्य समारोह लागू लक्ष्य के रूप में आपूर्ति की है एक शॉर्ट सर्किट हो रहा है, लेकिन typeof जांच इस पकड़ने चाहिए, तो मैं अपनी उपस्थिति समझ में नहीं आता। MDN पृष्ठ पर
लिंक:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind
संपादित करें: यह सुझाव दिया डुप्लिकेट से एक अलग सवाल है। सुझाए गए डुप्लिकेट पूछते हैं कि क्यों fNOP
आवश्यक है। मैं पूरी तरह से उसको grok।
यह सवाल है कि instanceof
चेक की आवश्यकता है और यह कौन सा कार्य करता है। मैं उपरोक्त अपनी शॉर्ट-सर्किट परिकल्पना प्रस्तुत करता हूं, एक कारण के साथ कि यह पूरी तरह से समझ में नहीं आता है।
क्या आप कृपया एमडीएन पेज का लिंक जोड़ना चाहते हैं? –
@mortezaT [MDN: Function.prototype.bind() पॉलीफिल] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill) –
शायद एक डुप्लिकेट [ MDN Function.prototype.bind बाध्य फ़ंक्शन कन्स्ट्रक्टर के रूप में बुलाया जाता है] (http://stackoverflow.com/questions/23693282) –