$lang['tuto'] = "টিউটোরিয়াল"; ?>$lang['tuto'] = "টিউটোরিয়াল"; ?> জাভাস্ক্রিপ্টে কল এবং

জাভাস্ক্রিপ্টে কল এবং আবেদনের মধ্যে পার্থক্য বোঝা

জাভাস্ক্রিপ্টে কল এবং আবেদনের মধ্যে পার্থক্য বোঝা
জাভাস্ক্রিপ্টে কল এবং আবেদনের মধ্যে পার্থক্য বোঝা

জাভাস্ক্রিপ্টে ফাংশন ইনভোকেশন পদ্ধতি

জাভাস্ক্রিপ্টে, ফাংশনগুলি বিভিন্ন উপায়ে আহ্বান করা যেতে পারে এবং দুটি সাধারণভাবে ব্যবহৃত পদ্ধতি হল `কল` এবং `প্রয়োগ`। এই পদ্ধতিগুলি আপনাকে প্রসঙ্গ (`এই` মান) নিয়ন্ত্রণ করতে দেয় যেখানে ফাংশনটি কার্যকর করা হয়। দক্ষ এবং কার্যকর জাভাস্ক্রিপ্ট কোড লেখার জন্য `কল` এবং `আবেদন` এর মধ্যে পার্থক্য বোঝা অত্যন্ত গুরুত্বপূর্ণ।

এই নিবন্ধটি একটি ফাংশন আহ্বান করার সময় `Function.prototype.call()` এবং `Function.prototype.apply()` এর মধ্যে পার্থক্যগুলি অনুসন্ধান করে৷ আমরা তাদের সিনট্যাক্স, কেস ব্যবহার এবং সম্ভাব্য কর্মক্ষমতা পার্থক্য পরীক্ষা করব। এই নিবন্ধের শেষ নাগাদ, কখন `আবেদন` এর পরিবর্তে `কল` ব্যবহার করতে হবে এবং এর বিপরীতে আপনি একটি পরিষ্কার ধারণা পাবেন।

আদেশ বর্ণনা
Function.prototype.call() প্রদত্ত এই মান এবং পৃথকভাবে প্রদত্ত আর্গুমেন্ট সহ একটি ফাংশনকে কল করে।
Function.prototype.apply() একটি প্রদত্ত এই মান সহ একটি ফাংশন কল করে, এবং একটি অ্যারে হিসাবে প্রদত্ত আর্গুমেন্ট।
this গতিশীল প্রসঙ্গ অ্যাসাইনমেন্টের অনুমতি দিয়ে যে বস্তু থেকে ফাংশনটি কল করা হয়েছিল তাকে বোঝায়।
console.log() ডিবাগ করার উদ্দেশ্যে কনসোলে বার্তা বা ভেরিয়েবল প্রিন্ট করে।
res.writeHead() একটি Node.js সার্ভারে HTTP স্থিতি কোড এবং প্রতিক্রিয়া শিরোনাম সেট করে।
res.end() একটি Node.js সার্ভারে প্রতিক্রিয়া প্রক্রিয়াটি শেষ করে, যা সংকেত দেয় যে সমস্ত ডেটা পাঠানো হয়েছে।
http.createServer() Node.js-এ একটি HTTP সার্ভার ইনস্ট্যান্স তৈরি করে, ইনকামিং রিকোয়েস্টের জন্য শোনা।
listen() HTTP সার্ভার শুরু করে, এটি একটি নির্দিষ্ট পোর্টে শোনার অনুমতি দেয়।

কলের ব্যবহার বোঝা এবং জাভাস্ক্রিপ্টে আবেদন করা

প্রদত্ত স্ক্রিপ্টগুলি ব্যবহারের মধ্যে পার্থক্যগুলি চিত্রিত করে Function.prototype.call() এবং Function.prototype.apply() জাভাস্ক্রিপ্টে। উভয় পদ্ধতি একটি নির্দিষ্ট সঙ্গে ফাংশন আহ্বান করতে ব্যবহৃত হয় this প্রসঙ্গ প্রথম উদাহরণে, call() পদ্ধতি আহ্বান করতে ব্যবহার করা হয় fullName বিভিন্ন বস্তুর উপর পদ্ধতি (person1 এবং person2), পৃথক আর্গুমেন্ট হিসাবে প্রতিটি বস্তুর বৈশিষ্ট্য পাস. এই পদ্ধতিটি একটি সংক্ষিপ্ত বাক্য গঠনের অনুমতি দেয় যখন আর্গুমেন্টের সংখ্যা জানা এবং স্থির করা হয়। দ্বিতীয় উদাহরণ ব্যবহার প্রদর্শন করে apply() পদ্ধতি, যা অনুরূপ call() কিন্তু স্বতন্ত্রের পরিবর্তে আর্গুমেন্টের অ্যারে নেয়। এই নমনীয়তা বিশেষভাবে উপযোগী হয় যখন আর্গুমেন্টের সংখ্যা পরিবর্তনশীল হয় বা একটি অ্যারের উৎস থেকে আসে।

Node.js ব্যাকএন্ড উদাহরণে, call() পদ্ধতিটি একটি HTTP সার্ভারের মধ্যে ব্যবহার করা হয় যা দিয়ে তৈরি করা হয় http.createServer(). এই উদাহরণ হাইলাইট কিভাবে this এইচটিটিপি অনুরোধে গতিশীলভাবে প্রতিক্রিয়া জানাতে সার্ভার-সাইড জাভাস্ক্রিপ্টে প্রসঙ্গটি ম্যানিপুলেট করা যেতে পারে। সার্ভার একটি অভিবাদন সঙ্গে প্রতিক্রিয়া, প্রদর্শন কিভাবে call() পদ্ধতির প্রসঙ্গ পরিবর্তন করতে পারে greet ফাংশন অবশেষে, সম্মিলিত ফ্রন্টএন্ড এবং ব্যাকএন্ড উদাহরণ উভয়ই কীভাবে দেখায় call() এবং apply() একটি আরো গতিশীল ফাংশন ব্যবহার করা যেতে পারে. ব্যবহার করে call() স্বতন্ত্র যুক্তি সহ এবং apply() আর্গুমেন্টের অ্যারে সহ, স্ক্রিপ্টটি গতিশীলভাবে ব্যবহারকারীর বিবরণ তৈরি করে, ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড জাভাস্ক্রিপ্ট ডেভেলপমেন্ট উভয় ক্ষেত্রেই এই পদ্ধতিগুলির ব্যবহারিক প্রয়োগগুলিকে চিত্রিত করে।

ফাংশন ইনভোকেশনের জন্য জাভাস্ক্রিপ্টে কল ব্যবহার এবং পদ্ধতি প্রয়োগ করা

জাভাস্ক্রিপ্ট ফ্রন্টএন্ড স্ক্রিপ্ট

// Example 1: Using Function.prototype.call()
const person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
};
const person1 = {
    firstName: "John",
    lastName: "Doe"
};
const person2 = {
    firstName: "Jane",
    lastName: "Smith"
};
// Call the fullName method on person1 and person2
console.log(person.fullName.call(person1)); // Output: John Doe
console.log(person.fullName.call(person2)); // Output: Jane Smith

নমনীয় আর্গুমেন্ট পাস করার জন্য Function.prototype.apply() প্রয়োগ করা হচ্ছে

জাভাস্ক্রিপ্ট ফ্রন্টএন্ড স্ক্রিপ্ট

// Example 2: Using Function.prototype.apply()
const person = {
    fullName: function(city, country) {
        return this.firstName + " " + this.lastName + ", " + city + ", " + country;
    }
};
const person1 = {
    firstName: "John",
    lastName: "Doe"
};
const person2 = {
    firstName: "Jane",
    lastName: "Smith"
};
// Apply the fullName method with arguments on person1 and person2
console.log(person.fullName.apply(person1, ["New York", "USA"])); // Output: John Doe, New York, USA
console.log(person.fullName.apply(person2, ["London", "UK"])); // Output: Jane Smith, London, UK

Node.js ব্যাকএন্ড উদাহরণ ব্যবহার করে কল করুন এবং আবেদন করুন

Node.js সহ জাভাস্ক্রিপ্ট ব্যাকএন্ড স্ক্রিপ্ট

// Load the required modules
const http = require('http');
// Create a server object
http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    // Example using call()
    function greet() {
        return 'Hello ' + this.name;
    }
    const user = { name: 'Alice' };
    res.write(greet.call(user)); // Output: Hello Alice
    res.end();
}).listen(3000);
console.log('Server running at http://localhost:3000/');

একটি ডায়নামিক ফাংশনের সাথে কল এবং আবেদনের সংমিশ্রণ

জাভাস্ক্রিপ্ট ফুল স্ট্যাক স্ক্রিপ্ট

// Define a function to display user details
function displayDetails(age, profession) {
    return this.name + " is " + age + " years old and works as a " + profession + ".";
}
// User objects
const user1 = { name: 'Bob' };
const user2 = { name: 'Alice' };
// Use call to invoke displayDetails
console.log(displayDetails.call(user1, 30, 'Engineer')); // Output: Bob is 30 years old and works as a Engineer.
// Use apply to invoke displayDetails
console.log(displayDetails.apply(user2, [28, 'Doctor'])); // Output: Alice is 28 years old and works as a Doctor.

জাভাস্ক্রিপ্টে প্রসঙ্গ ম্যানিপুলেশন অন্বেষণ

এর মৌলিক ব্যবহারের বাইরে call() এবং apply(), এই পদ্ধতিগুলিকে আরও জটিল এবং শক্তিশালী কোড তৈরি করতে অন্যান্য জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলির সাথে একত্রিত করা যেতে পারে। উদাহরণস্বরূপ, তারা প্রায়ই সঙ্গে একযোগে ব্যবহার করা হয় bind(), যা একটি নির্দিষ্ট করে একটি নতুন ফাংশন প্রদান করে this মান অপছন্দ call() এবং apply(), যা অবিলম্বে ফাংশন আহ্বান করে, bind() একটি আবদ্ধ ফাংশন তৈরি করতে ব্যবহার করা যেতে পারে যা একটি সামঞ্জস্যপূর্ণ প্রসঙ্গের সাথে পরে কল করা যেতে পারে। এটি ইভেন্ট পরিচালনার ক্ষেত্রে বিশেষভাবে উপযোগী, যেখানে আপনি নিশ্চিত করতে চাইতে পারেন যে একটি ফাংশন একটি নির্দিষ্ট বস্তুর প্রসঙ্গ ধরে রাখে এমনকি যখন এটি বিভিন্ন পরিবেশে কার্যকর করা হয়।

আরেকটি উন্নত ব্যবহারের ক্ষেত্রে অন্য বস্তুর সাথে ব্যবহারের জন্য একটি বস্তু থেকে ধার নেওয়ার পদ্ধতি জড়িত। এটি ব্যবহার করে অর্জন করা যেতে পারে call() বা apply() অস্থায়ীভাবে একটি ভিন্ন বস্তুর সাথে একটি পদ্ধতি আবদ্ধ করতে। যেমন অ্যারে পদ্ধতি slice() বা push() ধার করা যায় এবং অ্যারে-এর মতো বস্তুতে প্রয়োগ করা যেতে পারে যেমন ফাংশনে আর্গুমেন্ট অবজেক্ট। এই কৌশলটি কোডের বৃহত্তর নমনীয়তা এবং পুনঃব্যবহারযোগ্যতার জন্য অনুমতি দেয়, কারণ এটি নকল ছাড়াই বিভিন্ন বস্তু জুড়ে পদ্ধতিগুলিকে ভাগ করতে সক্ষম করে।

জাভাস্ক্রিপ্টে কল এবং আবেদন সম্পর্কে সাধারণ প্রশ্ন

  1. মধ্যে প্রধান পার্থক্য কি call() এবং apply()?
  2. প্রধান পার্থক্য যে call() আর্গুমেন্টের একটি তালিকা গ্রহণ করে, যখন apply() আর্গুমেন্টের একটি বিন্যাস গ্রহণ করে।
  3. কখন ব্যবহার করা উচিত apply() ওভার call()?
  4. আপনি ব্যবহার করা উচিত apply() যখন আপনার আর্গুমেন্টের একটি অ্যারে থাকে বা একটি ফাংশনে একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট পাস করতে হয়।
  5. মধ্যে কর্মক্ষমতা পার্থক্য আছে call() এবং apply()?
  6. সাধারণত, মধ্যে কোন উল্লেখযোগ্য কর্মক্ষমতা পার্থক্য নেই call() এবং apply(). কোন পার্থক্য সাধারণত নগণ্য হয়.
  7. করতে পারা apply() গণিত পদ্ধতি ব্যবহার করা হবে?
  8. হ্যাঁ, apply() গণিত পদ্ধতিতে সংখ্যার অ্যারে পাস করতে ব্যবহার করা যেতে পারে Math.max() বা Math.min().
  9. কি Function.prototype.bind()?
  10. bind() একটি নতুন ফাংশন তৈরি করে, যাকে বলা হলে, এটির থাকে this নতুন ফাংশন কল করার সময় প্রদত্ত যেকোনও পূর্ববর্তী আর্গুমেন্টের একটি প্রদত্ত ক্রম সহ প্রদত্ত মানের সাথে কীওয়ার্ড সেট করা হয়েছে।
  11. কিভাবে পারি call() পদ্ধতি ধার ব্যবহার করা হবে?
  12. তুমি ব্যবহার করতে পার call() একটি বস্তু থেকে পদ্ধতি ধার করে অন্য বস্তুতে ব্যবহার করতে, ফাংশনটি অনুলিপি না করে পদ্ধতি পুনঃব্যবহারের অনুমতি দেয়।
  13. ব্যবহার করা কি সম্ভব call() বা apply() কনস্ট্রাক্টরদের সাথে?
  14. না, কনস্ট্রাক্টরদের সাথে সরাসরি কল করা যাবে না call() বা apply(). পরিবর্তে, আপনি ব্যবহার করতে পারেন Object.create() উত্তরাধিকার নিদর্শন জন্য.
  15. অ্যারের মত বস্তু কি, এবং কিভাবে call() এবং apply() তাদের সাথে কাজ?
  16. অ্যারে-সদৃশ অবজেক্ট হল এমন বস্তু যার দৈর্ঘ্যের বৈশিষ্ট্য এবং সূচীকৃত উপাদান রয়েছে। call() এবং apply() এই বস্তুগুলিকে ম্যানিপুলেট করতে ব্যবহার করা যেতে পারে যেন তারা অ্যারে।

জাভাস্ক্রিপ্টে কল এবং আবেদনের ব্যবহার সংক্ষিপ্ত করা

জাভাস্ক্রিপ্টে, call() এবং apply() নিয়ন্ত্রণের জন্য অপরিহার্য this ফাংশনের মধ্যে প্রসঙ্গ call() পৃথক আর্গুমেন্ট পাস করার অনুমতি দেয়, এটি পরিচিত এবং স্থির আর্গুমেন্টের জন্য উপযুক্ত করে তোলে। বিপরীতে, apply() পরিবর্তনশীল আর্গুমেন্ট তালিকার জন্য নমনীয়তা প্রদান করে আর্গুমেন্টের একটি অ্যারে নেয়। উভয় পদ্ধতিই কোড পুনঃব্যবহারযোগ্যতা এবং গতিশীল ফাংশন আহ্বানকে উন্নত করে, তা ফ্রন্টএন্ড ডেভেলপমেন্ট বা Node.js পরিবেশে। পরিষ্কার, দক্ষ জাভাস্ক্রিপ্ট কোড লেখার জন্য কখন এবং কীভাবে কার্যকরভাবে এই পদ্ধতিগুলি ব্যবহার করতে হবে তা বোঝা গুরুত্বপূর্ণ।