জাভাস্ক্রিপ্ট ডাবল কোলন (বাইন্ড অপারেটর)


129

আপনি জানেন .bind()যে ফাংশন জন্য একটি শর্টকাট জন্য প্রস্তাব আছে , তাই আপনি লিখতে পারেন:

::this.handleStuff

এবং এটি এস 5 এর মতো কাজ করবে:

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
( আংশিক প্রয়োগকে সমর্থন করার বিষয়ে কিছু আলোচনা হয়েছিল )
বার্গি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.