জাভাস্ক্রিপ্ট .call()
এবং .apply()
পদ্ধতিগুলি আপনাকে কোনও ক্রিয়াকলাপের জন্য প্রসঙ্গ সেট করার অনুমতি দেয় ।
var myfunc = function(){
alert(this.name);
};
var obj_a = {
name: "FOO"
};
var obj_b = {
name: "BAR!!"
};
এখন আপনি কল করতে পারেন:
myfunc.call(obj_a);
কোনটি সতর্ক হবে FOO
। অন্য উপায়, পাস যখন obj_b
সতর্কতা ছিল BAR!!
। .call()
এবং এর মধ্যে পার্থক্যটি .apply()
হ'ল .call()
একটি কমা বিচ্ছিন্ন তালিকাটি গ্রহণ করে যদি আপনি নিজের ফাংশনে যুক্তি দিয়ে যাচ্ছেন এবং .apply()
একটি অ্যারের প্রয়োজন হয়।
myfunc.call(obj_a, 1, 2, 3);
myfunc.apply(obj_a, [1, 2, 3]);
অতএব, আপনি পদ্ধতিটি hook
ব্যবহার করে সহজেই একটি ফাংশন লিখতে পারেন apply()
। উদাহরণস্বরূপ, আমরা jQuerys .css()
পদ্ধতিতে একটি বৈশিষ্ট্য যুক্ত করতে চাই । আমরা আসল ফাংশন রেফারেন্স সংরক্ষণ করতে পারি, কাস্টম কোড দিয়ে ফাংশনটি ওভাররাইট করে স্টোর করা ফাংশনটি কল করতে পারি।
var _css = $.fn.css;
$.fn.css = function(){
alert('hooked!');
_css.apply(this, arguments);
};
যেহেতু ম্যাজিক arguments
অবজেক্টটি বস্তুর মতো একটি অ্যারে, তাই আমরা কেবল এটিতে পাস করতে পারি apply()
। এইভাবে আমরা গ্যারান্টি দিচ্ছি যে সমস্ত পরামিতিগুলি মূল ফাংশনে চলে গেছে।