जावास्क्रिप्ट डबल कोलोन (बाँध ऑपरेटर)


129

जैसा कि आप जानते हैं, .bind()फ़ंक्शन के लिए एक शॉर्टकट का प्रस्ताव है , इसलिए आप लिख सकते हैं:

::this.handleStuff

और यह es5 में उस तरह काम करेगा:

this.handleStuff.bind(this)

मेरा प्रश्न है: क्या इस तरह से दलीलें पारित करना संभव होगा?

मेरा मतलब उक्त शॉर्टकट से यह लिखने का एक तरीका है:

this.handleStuff.bind(this, 'stuff')

यह प्रतिक्रिया में एक बहुत ही सामान्य पैटर्न है, इसलिए इसे थोड़ा छोटा करना अच्छा होगा।


1
क्या आप आंशिक आवेदन के बारे में बात कर रहे हैं?
बेन एस्टन

अभी तक एक और कल्पना प्रस्ताव के लिए एक अच्छा विचार की तरह लगता है।
ग्रेग हर्बोइकज

जवाबों:


154

नहीं, परिचालक ऑपरेटर ( कल्पना प्रस्ताव ) दो स्वादों में आता है:

  • विधि निष्कर्षण

    ::obj.method      obj.method.bind(obj)
  • "आभासी विधि" कॉल

    obj::function     function.bind(obj)
    obj::function(…)  function.call(obj, …)

उनमें से किसी में भी आंशिक अनुप्रयोग की सुविधा नहीं है । आप जो चाहते हैं, उसके लिए आपको एक तीर का उपयोग करना चाहिए:

(...args) => this.handleStuff('stuff', ...args)  this.handleStuff.bind(this, 'stuff')

4
( आंशिक आवेदन का समर्थन करने के बारे में कुछ चर्चा हुई )
बर्गी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.