ব্যবহারের কারণ a
(0, foo.fn)();
হয় বাঁধাই কাটা : thisআবদ্ধ আর করা হবে না fooকিন্তু বিশ্বব্যাপী বস্তু আবদ্ধ করা হবে না।
তবে যে কোনও জাভাস্ক্রিপ্ট কোড (বা গুগলের জেএস কোড) বাইন্ডিংটি কাটতে চাইবে তার কারণ কী? (এবং এটি কি একটি বিরোধী ধরণ কিনা?)
ব্যবহারের কারণ a
(0, foo.fn)();
হয় বাঁধাই কাটা : thisআবদ্ধ আর করা হবে না fooকিন্তু বিশ্বব্যাপী বস্তু আবদ্ধ করা হবে না।
তবে যে কোনও জাভাস্ক্রিপ্ট কোড (বা গুগলের জেএস কোড) বাইন্ডিংটি কাটতে চাইবে তার কারণ কী? (এবং এটি কি একটি বিরোধী ধরণ কিনা?)
উত্তর:
আধুনিক জাভাস্ক্রিপ্ট রূপান্তর করতে - যা স্পেসিফিকেশনে সর্বাধিক সংযোজনগুলি ব্যবহার করে - একটি জাভাস্ক্রিপ্ট সংস্করণে আরও ব্যাপকভাবে সমর্থিত এই ধরণের কোড সাধারণত ট্রান্সপোর্টারদের (বাবেলের মতো) দ্বারা উত্পন্ন হয়।
এখানে এই উদাহরণস্বরূপ যেখানে এই প্রতিস্থাপনের ধরণটি ঘটে:
ধরা যাক, প্রতিস্থাপনের আগে আমাদের কাছে এই মূল কোডটি রয়েছে:
import {myfunc} from "mymodule";
myfunc();
এই ES5- সামঞ্জস্যপূর্ণ কোড করতে, আপনি এটি করতে পারেন:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
কিন্তু এখানে আমরা চালানো হবে myfuncসঙ্গে mymoduleযেমন thisমান, যা মূল কোডে ঘটছে না করা হয়। এবং যদিও যে শক্তি সবসময় কোনো সমস্যা হবে, এটা ফাংশন আচরণ করবে নিশ্চিত করতে উত্তম শুধু এটা মূল সংস্করণে would মত এমনকি যদি যে ফাংশন একটি ব্যবহার করেন, thisকিভাবে অস্বাভাবিক বা এমনকি অকাজের ব্যবহার করে - রেফারেন্স thisমধ্যে myfunc(হতে পারে কারণ মূল সংস্করণে এটিও হবে undefined)।
উদাহরণস্বরূপ, যদি this.memberFun()ফাংশনটিতে কোনও রেফারেন্সের কারণে মূল কোডটি একটি ত্রুটি ছুঁড়ে মারে, তবে এটি পরিবহিত সংস্করণেও ফেলে দেবে।
সুতরাং এটি হ'ল কমা অপারেটরটি সেই পার্থক্য থেকে মুক্তি পেতে ব্যবহৃত হয়:
(0, mymodule.myfunc)();
এটা ঠিক যে, কোডে যে আপনি নিজেকে লিখুন, আপনি একটি ভাল ব্যবহারের ক্ষেত্রে এই প্যাটার্ন জন্য আছে না হবে, যেমন আপনি ব্যবহার না thisমধ্যে myfuncপ্রথম স্থানে।
requireES6 বা ES5 এর সাথে সম্পর্কিত? আমি মনে করতাম যে প্রয়োজনটি নোড মডিউল।
modA.fn1) হয় তবে এই ফাংশনগুলি সত্যই ব্যবহার করা উচিত নয় thisতবে যদি দুর্ঘটনাক্রমে তারা করে, আমরা thisপার্শ্ব প্রতিক্রিয়া হিসাবে
bindপদ্ধতি বাঁধাই এখানে এটি কেবল একটি প্রসঙ্গে পরিবর্তন। আপনি বাঁধাই কাটা বা হারাতে পারবেন না (এর দ্বারা নির্মিত বন্ডbind)।