ECMAScript 5 (ES5) হল জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ ভার্সন যা ২০০৯ সালে প্রকাশিত হয়েছিল। ES5 পূর্ববর্তী ES3 এর উপর ভিত্তি করে এবং এতে অনেক নতুন বৈশিষ্ট্য এবং উন্নত ফিচার যুক্ত করা হয়েছে, যা জাভাস্ক্রিপ্ট ডেভেলপমেন্টকে আরও শক্তিশালী এবং কার্যকর করে তোলে। ES5 মূলত ব্রাউজারদের সমর্থনের জন্য ডিজাইন করা হয়েছিল এবং এটি বিভিন্ন বাগ ফিক্স, পারফরম্যান্স অপ্টিমাইজেশন এবং নতুন ফিচার প্রদান করে।
স্ট্রিক মোড ES5 এ পরিচিত একটি নতুন ফিচার যা কোডের ত্রুটি ধরার ক্ষমতা বৃদ্ধি করে এবং কিছু অপ্রত্যাশিত আচরণ নিষ্ক্রিয় করে। এটি কোডের নিরাপত্তা এবং মান উন্নত করে।
"use strict";
function myFunction() {
x = 10; // ReferenceError: x is not defined
}
myFunction();
ব্যাখ্যা: স্ট্রিক মোডে, অপরিচিত ভেরিয়েবল ব্যবহার করলে ত্রুটি সৃষ্টি হয়, যা কোডের ভুলগুলো সহজে চিহ্নিত করতে সাহায্য করে।
ES5 এ ডেটা প্রোপার্টি নির্দিষ্ট করার জন্য Object.defineProperty()
এবং Object.defineProperties()
মেথড যুক্ত করা হয়েছে। এগুলো অবজেক্টের প্রপার্টিগুলোর গুণাবলী নির্ধারণ করতে ব্যবহৃত হয়, যেমন writable
, enumerable
, এবং configurable
.
let person = {};
Object.defineProperty(person, 'name', {
value: 'Alice',
writable: false,
enumerable: true,
configurable: false
});
console.log(person.name); // আউটপুট: Alice
person.name = 'Bob'; // চেষ্টা করলে পরিবর্তন হবে না
console.log(person.name); // আউটপুট: Alice
ব্যাখ্যা: এখানে, name
প্রপার্টিটি অপরিবর্তনীয় (non-writable) করা হয়েছে, ফলে এর মান পরিবর্তন করা যায় না।
ES5 এ অবজেক্টের প্রপার্টিগুলির উপর গেটার এবং সেটার মেথড সংজ্ঞায়িত করার সুবিধা যুক্ত করা হয়েছে। এটি ডেটা এক্সেস এবং মডিফিকেশনের নিয়ন্ত্রণ প্রদান করে।
let person = {
firstName: 'John',
lastName: 'Doe',
get fullName() {
return `${this.firstName} ${this.lastName}`;
},
set fullName(name) {
let parts = name.split(' ');
this.firstName = parts[0];
this.lastName = parts[1];
}
};
console.log(person.fullName); // আউটপুট: John Doe
person.fullName = 'Jane Smith';
console.log(person.firstName); // আউটপুট: Jane
console.log(person.lastName); // আউটপুট: Smith
ব্যাখ্যা: এখানে, fullName
প্রপার্টির জন্য গেটার এবং সেটার মেথড ব্যবহার করা হয়েছে, যা পুরো নাম একসাথে বা আলাদা করে সেট এবং গেট করতে সাহায্য করে।
ES5 এ অ্যারের জন্য কিছু নতুন মেথড যুক্ত করা হয়েছে, যা ডেটা ম্যানিপুলেশনকে সহজ করে তোলে।
forEach()
forEach()
মেথডটি অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন প্রয়োগ করে।
let numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
console.log(number * 2);
});
// আউটপুট:
// 2
// 4
// 6
// 8
// 10
map()
map()
মেথডটি অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন প্রয়োগ করে এবং নতুন একটি অ্যারে রিটার্ন করে।
let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(function(number) {
return number * 2;
});
console.log(doubled); // আউটপুট: [2, 4, 6, 8, 10]
filter()
filter()
মেথডটি নির্দিষ্ট একটি শর্ত পূরণ করে এমন উপাদানগুলোকে নির্বাচন করে একটি নতুন অ্যারে রিটার্ন করে।
let numbers = [1, 2, 3, 4, 5];
let even = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(even); // আউটপুট: [2, 4]
reduce()
reduce()
মেথডটি অ্যারের উপাদানগুলিকে একটি একক মানে রূপান্তর করে।
let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce(function(accumulator, current) {
return accumulator + current;
}, 0);
console.log(sum); // আউটপুট: 15
Function.prototype.bind()
bind()
মেথডটি একটি ফাংশনকে নির্দিষ্ট this
কনটেক্সটে বাইন্ড করে এবং নতুন একটি ফাংশন রিটার্ন করে।
let person = {
name: 'Alice',
greet: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
let greet = person.greet.bind(person);
greet(); // আউটপুট: Hello, my name is Alice
ব্যাখ্যা: এখানে, greet
ফাংশনটি person
অবজেক্টের সাথে বাইন্ড করা হয়েছে, তাই এটি সঠিক this
রেফারেন্স পায়।
ES5 এ JSON (JavaScript Object Notation) সমর্থন যুক্ত করা হয়েছে, যা ডেটা বিনিময়ের জন্য ব্যাপকভাবে ব্যবহৃত হয়। JSON.parse()
এবং JSON.stringify()
মেথডগুলি JSON ডেটা হ্যান্ডল করতে ব্যবহৃত হয়।
let jsonString = '{"name": "John", "age": 30}';
let obj = JSON.parse(jsonString);
console.log(obj.name); // আউটপুট: John
let newJsonString = JSON.stringify(obj);
console.log(newJsonString); // আউটপুট: {"name":"John","age":30}
ব্যাখ্যা: JSON.parse()
স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করে এবং JSON.stringify()
অবজেক্টকে JSON স্ট্রিং এ রূপান্তর করে।
ES5 এ Object.prototype
এবং অন্যান্য প্রোটোটাইপের মাধ্যমে নতুন মেথড যোগ করার সুবিধা দেওয়া হয়েছে।
if (!String.prototype.capitalize) {
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
};
}
let word = "hello";
console.log(word.capitalize()); // আউটপুট: Hello
ব্যাখ্যা: এখানে, String
প্রোটোটাইপে একটি নতুন capitalize
মেথড যোগ করা হয়েছে, যা স্ট্রিংয়ের প্রথম অক্ষরকে বড় করে দেয়।
Object.create()
Object.create()
মেথডটি একটি নতুন অবজেক্ট তৈরি করে যার প্রোটোটাইপ নির্দিষ্ট করা হয়।
let animal = {
speak: function() {
console.log(`${this.name} makes a sound.`);
}
};
let dog = Object.create(animal);
dog.name = 'Buddy';
dog.speak(); // আউটপুট: Buddy makes a sound.
ব্যাখ্যা: এখানে, dog
অবজেক্টটি animal
অবজেক্টের প্রোটোটাইপ থেকে তৈরি করা হয়েছে, তাই এটি speak
মেথড ব্যবহার করতে পারে।
Array.isArray()
Array.isArray()
মেথডটি চেক করে যে একটি মান অ্যারে কিনা।
let arr = [1, 2, 3];
let obj = { a: 1 };
console.log(Array.isArray(arr)); // আউটপুট: true
console.log(Array.isArray(obj)); // আউটপুট: false
ব্যাখ্যা: Array.isArray()
নির্ধারণ করে যে একটি নির্দিষ্ট মান অ্যারে কিনা, যা typeof
ব্যবহার করে করা সম্ভব নয়।
Array.prototype.indexOf()
indexOf()
মেথডটি একটি অ্যারে মধ্যে নির্দিষ্ট মানের প্রথম উপস্থিতির সূচক রিটার্ন করে। যদি মানটি না পাওয়া যায়, তবে এটি -1
রিটার্ন করে।
let fruits = ['apple', 'banana', 'cherry', 'banana'];
console.log(fruits.indexOf('banana')); // আউটপুট: 1
console.log(fruits.indexOf('grape')); // আউটপুট: -1
ব্যাখ্যা: indexOf()
নির্দিষ্ট মানের প্রথম উপস্থিতির সূচক প্রদান করে, যা ডুপ্লিকেট মানের ক্ষেত্রে প্রথমটি নির্দেশ করে।
Array.prototype.lastIndexOf()
lastIndexOf()
মেথডটি একটি অ্যারে মধ্যে নির্দিষ্ট মানের সর্বশেষ উপস্থিতির সূচক রিটার্ন করে।
let fruits = ['apple', 'banana', 'cherry', 'banana'];
console.log(fruits.lastIndexOf('banana')); // আউটপুট: 3
console.log(fruits.lastIndexOf('grape')); // আউটপুট: -1
ব্যাখ্যা: lastIndexOf()
নির্দিষ্ট মানের সর্বশেষ উপস্থিতির সূচক প্রদান করে।
Object.keys()
Object.keys()
মেথডটি একটি অবজেক্টের সকল enumerable প্রপার্টির কী তালিকা রিটার্ন করে।
let person = {
name: 'Alice',
age: 25,
city: 'Dhaka'
};
console.log(Object.keys(person)); // আউটপুট: ['name', 'age', 'city']
ব্যাখ্যা: Object.keys()
একটি অবজেক্টের সকল প্রপার্টির নামের একটি অ্যারে প্রদান করে।
ES5 এর মাধ্যমে জাভাস্ক্রিপ্টের কোড লেখার প্রক্রিয়া আরও নিরাপদ, কার্যকর এবং সংগঠিত হয়েছে। এর প্রধান উপকারিতা হলো:
Object.create()
এবং ক্লাসের অনুরূপ বৈশিষ্ট্যগুলির মাধ্যমে কোডের পুনরায় ব্যবহার সহজ হয়।Number
প্রোপার্টি ব্যবহার করে ডেটা ম্যানিপুলেশন আরও সহজ ও কার্যকর হয়।ECMAScript 5 (ES5) জাভাস্ক্রিপ্টের একটি মাইলস্টোন যা ভাষার ক্ষমতাকে বৃদ্ধি করে এবং ডেভেলপারদের জন্য নতুন সরঞ্জাম ও বৈশিষ্ট্য প্রদান করে। স্ট্রিক মোড, গেটার ও সেটার, নতুন অ্যারে মেথড, এবং JSON সমর্থনের মতো ফিচারগুলো কোড লেখাকে আরও শক্তিশালী, নিরাপদ এবং কার্যকর করে তোলে। ES5 এর মাধ্যমে জাভাস্ক্রিপ্ট এখন আরও সংগঠিত এবং রক্ষণাবেক্ষণযোগ্য হয়ে উঠেছে, যা বড় প্রজেক্ট এবং টিম-ভিত্তিক ডেভেলপমেন্টের ক্ষেত্রে অত্যন্ত উপকারী।
ES5 এর এই নতুন বৈশিষ্ট্যগুলো শিখে এবং ব্যবহার করে আপনি আপনার জাভাস্ক্রিপ্ট কোডকে আরও উন্নত এবং নির্ভরযোগ্য করতে পারবেন, যা আপনার প্রোগ্রামিং দক্ষতাকে নতুন উচ্চতায় পৌঁছে দেবে।
Read more