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


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.