ECMAScript রেফারেন্স টাইপ
- পূর্ববর্তী পৃষ্ঠা ECMAScript টাইপ কনভারশন
- পরবর্তী পৃষ্ঠা একক অপারেটর
রেফারেন্স টাইপগুলির সাধারণত 'ক্লাস' নামে পরিচিত
এই ট্যুটোরিয়ালটি বেশ কিছু ECMAScript-র প্রিডিফাইনড রেফারেন্স টাইপকে চর্চা করবে。
রেফারেন্স টাইপ
রেফারেন্স টাইপগুলির সাধারণত 'ক্লাস' নামে পরিচিত, অর্থাৎ, যখন একটি রেফারেন্স মানা হয়, তখন এটি একটি অবজেক্টকে সংস্কার করা হয়。
এই ট্যুটোরিয়ালটি বেশ কিছু ECMAScript-র প্রিডিফাইনড রেফারেন্স টাইপকে চর্চা করবে。
এখন থেকে, আমরা পূর্ববর্তীতে চর্চিত মৌলিক টাইপের সঙ্গে সংযুক্ত উপযুক্ত টাইপগুলির বিষয়ে আলোচনা করব।
নোট:প্রচলিত অর্থে, ECMAScript-এর ক্লাস রয়েছে না। একটি সত্য হল, ECMA-262-এর মধ্যে 'ক্লাস' একটি শব্দ কোনও ভাবেই প্রকাশিত হয়নি। ECMAScript 'অবজেক্ট ডিফাইনিশন' নামক একটি পরিভাষা ব্যবহার করে, যা অন্যান্য প্রোগ্রামিং ভাষার ক্লাসের সমতুল্য।
সুঝাওএই টিউটোরিয়ালটিতে 'বস্তু' শব্দটির ব্যবহার করা হবে।
বস্তুটি new অপারেটর দ্বারা এবং তৈরি করতে হবে বস্তুর নাম দিয়ে তৈরি হয়।উদাহরণস্বরূপ, নিচের কোডটি Object বস্তুর ইনস্ট্যান্স তৈরি করে:
var o = new Object();
এই সিন্ট্যাক্সটি Java ভাষার সাথে একই, কিন্তু ECMAScript-এর ক্ষেত্রে, যখন একাধিক পারামিটার থাকে, ব্র্যাকেট ব্যবহার করা প্রয়োজন।যদি কোনো পারামিটার না থাকে, যেমন নিচের কোডের মতো, ব্র্যাকেট উপেক্ষা করা যায়:
var o = new Object;
নোট:যদিও ব্র্যাকেট অপরিহার্য নয়, কিন্তু সংঘাত রোধ করতে, ব্র্যাকেট ব্যবহার করা ভালো।
সুঝাওআমরা এই বস্তুর ভিত্তির দিকে আরও গভীরভাবে আলোচনা করবো।
এই ধাপটির মূল বিষয় একই মৌলিক ধরনের পরিচয় বস্তু।
Object বস্তু
Object বস্তুটির নিজস্ব কোনো গুরুত্বপূর্ণ কাজ নেই, কিন্তু অন্যান্য শ্রেণীগুলির সাথে জড়িত হওয়ার আগে, এটি জানা উচিত কারণ ECMAScript-এর Object বস্তুটি জাভা-র java.lang.Object-র অনুরূপ, ECMAScript-এর সব বস্তুই এই বস্তু থেকে উদ্ভূত, Object বস্তুর সমস্ত বৈশিষ্ট্য ও পদ্ধতিগুলি অন্যান্য বস্তুতেও দেখা যাবে, তাই Object বস্তুকে বোঝা একটি বস্তুকে বোঝা থেকে বেশি সহায়ক হবে।
Object বস্তুটির নিচের প্রতিবন্ধকতা:
- constructor
- বস্তু তৈরির ফাংশনের পরিচয় (পোইন্টার)।Object বস্তুর ক্ষেত্রে, এই পোইন্টার মৌলিক Object() ফাংশনের দিকে ইনডিকেট করে।
- Prototype
- এই বস্তুর বস্তু প্রথমভাবের সূত্রের পরিচয়।সব বস্তুর ক্ষেত্রে, এটি ডিফল্টভাবে Object বস্তুর একটি ইনস্ট্যান্স ফিরিয়ে দেয়।
Object বস্তুটির আরও কিছু পদ্ধতি আছে:
- hasOwnProperty(property)
- বস্তুটিতে কোনো বিশেষ বৈশিষ্ট্য আছে কি না তা নিশ্চিত করে।এই বৈশিষ্ট্যটি শব্দকোষের মাধ্যমে নির্দিষ্ট করতে হবে।(উদাহরণস্বরূপ, o.hasOwnProperty("name") )
- IsPrototypeOf(object)
- এই বস্তু অন্য একটি বস্তুর প্রথমভাবে কি না তা নিশ্চিত করে।
- PropertyIsEnumerable
- দেওয়া বৈশিষ্ট্যটি for...in স্টেটমেন্টের মাধ্যমে গণনা করা যায় কি না তা নিশ্চিত করে।
- ToString()
- এই বস্তুর মূল স্ট্রিং প্রদর্শন ফিরিয়ে দেয়।অবজেক্ট বস্তুর ক্ষেত্রে, ECMA-262 এর কোনো মান নির্ধারণ করেনি, তাই ভিন্ন ভিন্ন ECMAScript রূপায়নগুলির ফলাফল ভিন্ন ভিন্ন হতে পারে।
- ValueOf()
- কোন বস্তুর মূল মানকে ফিরিয়ে দেয়।অনেক বস্তুর ক্ষেত্রে, এই পদ্ধতির ফলাফল এটোস্ট্রিং() এর ফলাফলের সমতুল।
মন্তব্য:উপরে উল্লেখিত প্রত্যেকটি বৈশিষ্ট্য এবং মথোদ্দতকে অন্য অবজেক্টগুলি অবরূপীকরণ করা হবে।
Boolean অবজেক্ট
Boolean অবজেক্ট Boolean মৌলিক টাইপের একটি রেফারেন্স টাইপ
Boolean অবজেক্ট তৈরি করার জন্য, Boolean মান প্রমাণ্য হিসাবে পাঠাতে হবে:
var oBooleanObject = new Boolean(true);
Boolean অবজেক্ট, Object অবজেক্টের ValueOf() মথোদ্দত অবরূপীকরণ করবে, true এবং false মৌলিক মান ফিরিয়ে দেবে।ToString() মথোদ্দতও অবরূপীকরণ করবে, "true" এবং "false" শব্দকোষ ফিরিয়ে দেবে。
দুঃখের কারণ, ECMAScript-এ Boolean অবজেক্ট কমই ব্যবহৃত হয়, এবং যদি ব্যবহৃত হয়, তবুও তা সহজভাবে বোঝা যায় না。
সমস্যা সাধারণত Boolean এক্সপ্রেশনে Boolean অবজেক্ট ব্যবহার করার সময় হয়।যেমন:
var oFalseObject = new Boolean(false); var bResult = oFalseObject && true; // ফলাফল true
এই কোডটিতে, false মানের Boolean অবজেক্ট তৈরি করা হয়।এই মানটির সাথে true-র AND অপারেশন করা হয়।Boolean গণিতে, false-কে true-র সাথে AND অপারেশন করা হলে, ফলাফল false।কিন্তু, এই কোডটিতে, oFalseObject-এর মান false-কে গণিতিকভাবে গণিত করা হয়, নয়, oFalseObject-কে
যেমন আগে বৈশিষ্ট্যত করা হয়েছে, Boolean এক্সপ্রেশনে, সমস্ত অবজেক্টকে স্বয়ংক্রিয়ভাবে true হিসাবে ব্যবহার করা হয়, তাই oFalseObject-এর মান true।তারপর, true-কে true-র সাথে AND অপারেশন করা হয়, ফলাফল true
নোট:আপনি Boolean অবজেক্টের প্রাপ্তিত্ব সম্পর্কে জানতে পারেন, কিন্তু এই সেকশনে উল্লেখিত সমস্যাগুলি দূর করতে, Boolean মৌলিক মান ব্যবহার করাই সবচেয়ে ভাল
পড়ুন
Boolean অবজেক্ট সম্পর্কে আরও তথ্য জানতে, এখানে পরিদর্শন করুন: জেভাস্ক্রিপ্ট বোলিয়েন ওবজেক্ট রেফারেন্স ম্যানুয়াল。
Number অবজেক্ট
যেমন আপনি ভাবতে পারেন, Number অবজেক্ট Number মৌলিক টাইপের একটি রেফারেন্স টাইপ।Number অবজেক্ট তৈরি করার জন্য, নিচের কোডটি ব্যবহার করুন:
var oNumberObject = new Number(68);
আপনি সম্ভবত এই চপ্তরের আগের বিষয়গুলিতে চিন্তা করা সম্ভব যে, Number অবজেক্ট (যেমন Number.MAX_VALUE) নিয়ে আলোচনা করা হয়েছে।সমস্ত বিশেষ মান সবসময় Number অবজেক্টের স্থায়ী বৈশিষ্ট্য
নম্বর অবজেক্টের মৌলিক মান পাওয়ার জন্য, valueOf() মথোদ্দত ব্যবহার করতে হবে:
var iNumber = oNumberObject.valueOf();
স্বাভাবিক, Number ক্লাসও toString() পদ্ধতি রয়েছে, যা উপরোক্ত ধরনের কনভারশন নিয়ে বিস্তারিতভাবে আলোচিত হয়েছে。
প্রত্যায় ওবজেক্ট থেকে উত্তরণ করা স্ট্যান্ডার্ড পদ্ধতির পাশাপাশি, Number ওবজেক্টও কিছু বিশেষ পদ্ধতি রয়েছে, যা সংখ্যা প্রকাশ করে。
toFixed() পদ্ধতি
toFixed() পদ্ধতি বাড়াতে হয় যে মাত্রা সংখ্যার স্ট্রিং রূপ ফিরায়। উদাহরণ হিসাবে:
var oNumberObject = new Number(68); alert(oNumberObject.toFixed(2)); // প্রদর্শিত "68.00"
এখানে, toFixed() পদ্ধতির প্রার্থী 2, যার মানে দুইটি মাত্রা প্রদর্শিত হবে। এই পদ্ধতি "68.00" ফিরায়, খালি স্ট্রিংসমূহকে 0-দ্বারা পূর্ণ করা হয়। মূদ্রা প্রয়োগগুলির জন্য এই পদ্ধতি খুবই উপযোগী, toFixed() পদ্ধতি 0 থেকে 20 মাত্রা পর্যন্ত সংখ্যা প্রকাশ করতে পারে, এই সংখ্যা সংখ্যা বড় হলে তা দুর্বলতা প্রকাশ করে।
toExponential() পদ্ধতি
toExponential() পদ্ধতি সংখ্যাকে বৈজ্ঞানিক পদ্ধতিতে প্রকাশ করে, যা সংখ্যার স্ট্রিং রূপ ফিরায়।
toFixed() পদ্ধতির মতো, toExponential() পদ্ধতিও একটি প্রার্থী রয়েছে, যা প্রদর্শিত হতে হয়েছে যে কোনও অঙ্কের মাত্রা
var oNumberObject = new Number(68); alert(oNumberObject.toExponential(1)); // প্রদর্শিত "6.8e+1"
এই কোডটির ফলাফল "6.8e+1" হয়, যেটা আগেই ব্যাখ্যা করা হয়েছে, তা 6.8x10 হিসাবে প্রকাশ করা হয়1সমস্যা হল, যদি জানা যায় না যে কোনও রূপ (প্রত্যায় রূপ বা সংখ্যালঘু রূপ) দিয়ে সংখ্যা প্রকাশ করা হবে, তবে toPrecision() পদ্ধতিকে ব্যবহার করা যেতে পারে。
toPrecision() পদ্ধতি
toPrecision() পদ্ধতি সংখ্যাকে সবচেয়ে মূল্যবান রূপে প্রকাশ করে, যা প্রত্যায় রূপ বা সংখ্যালঘু রূপে প্রকাশ করে। এটা একটি প্রার্থী, যা সংখ্যার প্রকাশের সংখ্যা (সংখ্যালঘু রূপকে বাদ দিয়ে)। উদাহরণ হিসাবে:
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(1)); // প্রদর্শিত "7e+1"
এই কোডটির কাজ হল সংখ্যা 68-কে একটি অঙ্কে প্রকাশ করা, ফলাফল "7e+1" হয়, অন্য রূপে বলতেগুলি তা 70। একথা সত্য, toPrecision() পদ্ধতি সংখ্যাকে আনুমানিক করে। কিন্তু, যদি 2 টি অঙ্কে সংখ্যা 68-কে প্রকাশ করা হয়, তবে তা খুবই সহজ হবে:
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(2)); // প্রদর্শিত "68"
স্বাভাবিক, এটা "68" হিসাবে প্রদর্শিত হয়, কারণ এটা এই সংখ্যার সঠিক প্রকাশ। কিন্তু, যদি বলা হয় যে বড় অঙ্কের সংখ্যা দেওয়া হয়, তবে কী হবে?
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(3)); //বাক্য "68.0" ফিরায়
এই ক্ষেত্রে, toPrecision(3) toFixed(1) এর সমতুল্য, "68.0" ফিরায়:
toFixed()、toExponential() এবং toPrecision() মথদা আনুমানিক করে, যাতে সঠিক দশমিক সংখ্যা দ্বারা সংখ্যা সঠিকভাবে প্রকাশ করা হয়:
সুঝাওBoolean অবজেক্টকের মতো, Number অবজেক্টকেরও অত্যন্ত গুরুত্বপূর্ণ, কিন্তু এই টাইপটির ব্যবহার করতে হলে সতর্ক হতে হবে যাতে কোনও সমস্যা না হয়। যতটা সম্ভব, সংখ্যার প্রকৃত প্রতিনিধিত্বকে ব্যবহার করুন:
পড়ুন
Number অবজেক্টকের বিষয়ে আরও তথ্য জানতে, জেভাস্ক্রিপ্ট নম্বর ওবজেক্ট রেফারেন্স ম্যানুয়াল。
String অবজেক্টকের
String অবজেক্টকের String প্রকৃত টাইপের প্রতিনিধিত্ব করে, যা নিম্নলিখিত পদ্ধতিতে তৈরি হয়:
var oStringObject = new String("hello world");
String অবজেক্টকের valueOf() এবং toString() মথদা String টাইপের মৌলিক মান ফিরায়:
alert(oStringObject.valueOf() == oStringObject.toString()); //বাক্য "true" ফিরায়
এই কোডটি চালু করলে, "true" ফিরায়, যা বলতে হল এই মানগুলি খুবই সমান:
মন্তব্য:String অবজেক্টকের ECMAScript-এর অন্যতম জটিল রেফারেন্স টাইপকের একটি। এই ধাপটির কেন্দ্রবিন্দু হল String ক্লাসের মৌলিক ফংশন; আরও অগ্রণী ফংশনগুলির জন্য এই টিউটোরিয়ালের সংশ্লিষ্ট চপ্তকে পড়ুন বা জেভাস্ক্রিপ্ট স্ট্রিং ওবজেক্ট রেফারেন্স ম্যানুয়াল。
length property
String অবজেক্টকের property length আছে, যা হল স্ট্রিংতের চরিত্রসংখ্যা:
var oStringObject = new String("hello world"); alert(oStringObject.length); //বাক্য "11" ফিরায়
এই উদাহরণটি "11" ফিরায়, যা "hello world"-এর চরিত্রসংখ্যা। মনে রাখুন, যেহেতু স্ট্রিংটির মধ্যে দ্বিবাক্যবিন্যাসকৃত চরিত্র (যা ASCII চরিত্রের তুলনায় একটি বাইট দুইটি বাইট অবশ্যই অবশ্যই একটি চরিত্র হিসাবে গণ্য করা হয়):
charAt() এবং charCodeAt() মথদা
String অবজেক্টকের অনেক মথদা আছে।
প্রথমে, charAt() এবং charCodeAt() মথদা স্ট্রিংতের একক চরিত্রকে সংলগ্ন করে। এই দুটি মথদারও একটি পারামিটার আছে, যা হল সংলগ্ন করতে হলের চরিত্রের স্থান:
charAt() মথদা নির্দিষ্ট স্থানের চরিত্রকে যুক্ত করে একটি স্ট্রিং ফিরায়:
var oStringObject = new String("hello world"); alert(oStringObject.charAt(1)); //বাক্য "e" উত্তোলন করুন
শব্দসূচী "hello world"-এ, অবস্থান 1-এর অক্ষর "e"। "ECMAScript মৌলিক টাইপ" এই ধাপে আমরা বলেছিলাম, প্রথম অক্ষরের অবস্থান 0, দ্বিতীয় অক্ষরের অবস্থান 1, এবং এইভাবে অন্যরা। তাই, charAt(1) দ্বারা ফলাফল "e" পাওয়া যায়।
যদি চাইলে চারিদিক কোড পাওয়া যায় না, বরং অক্ষর, তবে charCodeAt() পদ্ধতি ব্যবহার করা যেতে পারে:
var oStringObject = new String("hello world"); alert(oStringObject.charCodeAt(1)); // প্রদর্শন "101"
এই উদাহরণটি "101" প্রদর্শন করে, যা ছোট অক্ষর "e"-র চারিদিক কোড।
concat() পদ্ধতি
এখন concat() পদ্ধতি, একটি বা একাধিক শব্দসূচীকে String অবজেক্টের মৌলিক মানে যুক্ত করতে ব্যবহৃত হয়। এই পদ্ধতি মৌলিক String অবজেক্টকে অপরিবর্তিত রাখে, এই পদ্ধতি ফলাফল হল:
var oStringObject = new String("hello "); var sResult = oStringObject.concat("world"); alert(sResult); // প্রদর্শন "hello world" alert(oStringObject); // প্রদর্শন "hello "
এই কোডে, concat() পদ্ধতির দ্বারা ফলাফল "hello world" পাওয়া যায়, কিন্তু String অবজেক্ট পুরোপুরি "hello " ভাবে রয়ে গেছে। এই কারণে, সাধারণত, জোড়ানোর জন্য জোড়ানোর সূত্র (প্লাস) ব্যবহার করা হয়, কারণ এই রূপটি বৈধ আচরণকে স্পষ্ট করে:
var oStringObject = new String("hello "); var sResult = oStringObject + "world"; alert(sResult); // প্রদর্শন "hello world" alert(oStringObject); // প্রদর্শন "hello "
indexOf() এবং lastIndexOf() পদ্ধতি
এখন পর্যন্ত, শব্দসূচী যুক্ত করার পদ্ধতি, শব্দসূচীতে একক অক্ষর পূর্বাধিকার করার পদ্ধতি নিয়ে আলোচনা করা হয়েছে। কিন্তু যদি কোনও শব্দসূচীতে কোনও অক্ষর উপস্থিত থাকা না পাওয়া যায়, তখন কোনও পদ্ধতি ব্যবহার করা উচিত? এই সময়, indexOf() এবং lastIndexOf() পদ্ধতি ব্যবহার করা যেতে পারে।
indexOf() এবং lastIndexOf() পদ্ধতিগুলি প্রদত্ত উপশব্দটি অন্য শব্দসূচীতে অবস্থান প্রদান করে, যদি উপশব্দটি পাওয়া যায় না, তবে -1 প্রদান করে।
দুইটি পদ্ধতির পার্থক্য হল, indexOf() পদ্ধতি শুরুর দিক থেকে (অবস্থান 0) শুরু করে শব্দসূচীতে অনুসন্ধান করে, আবার lastIndexOf() পদ্ধতি শুরুর দিক থেকে শব্দসূচীতে অনুসন্ধান করে। উদাহরণ:
var oStringObject = new String("hello world!"); alert(oStringObject.indexOf("o")); //ফলাফল "4" alert(oStringObject.lastIndexOf("o")); //ফলাফল "7"
এখানে, প্রথম "o" স্ট্রিং 4-তম স্থানে পাওয়া যায়, যেমন "hello"-তে; শেষ "o" 7-তম স্থানে পাওয়া যায়, যেমন "world"-তে। যদি স্ট্রিং-এর মধ্যে একমাত্র "o" স্ট্রিং থাকে, তবে indexOf() এবং lastIndexOf() পদ্ধতিগুলোর ফলাফলটি একই স্থানে পাওয়া যায়。
localeCompare() পদ্ধতি
পরবর্তী পদ্ধতি localeCompare() হল, যা স্ট্রিং-কে ক্রমান্বয়ে সাজায়। এই পদ্ধতিটির একটি প্রার্থী - যা তুলনা করতে হবে, ফলাফলটি নিম্নলিখিত তিনটির মধ্যে একটি হয়:
- যদি String অবজেক্ট প্রতিযোগীতার স্ট্রিং-এর পূর্বে অবস্থিত, তবে নেতিবাচক ফলাফল ফেরৎ পাওয়া যায়
- যদি String অবজেক্ট প্রতিযোগীতার স্ট্রিং-এর সঙ্গে সমান, তবে 0 ফলাফল ফেরৎ পাওয়া যায়
- যদি String অবজেক্ট প্রতিযোগীতার স্ট্রিং-এর পরে অবস্থিত, তবে পজিটিভ ফলাফল ফেরৎ পাওয়া যায়。
মন্তব্য:যদি নেতিবাচক ফলাফল ফেরৎ পাওয়া যায়, তবে সবচেয়ে সাধারণ হল -1, কিন্তু সত্যিকারের ফলাফলটি কার্যকরীতার দ্বারা নির্ধারিত হয়। যদি নেতিবাচক ফলাফল ফেরৎ পাওয়া যায়, তবে সবচেয়ে সাধারণ হল 1, কিন্তু সত্যিকারের ফলাফলটি কার্যকরীতার দ্বারা নির্ধারিত হয়。
এমন একটি উদাহরণ হল:
var oStringObject = new String("yellow"); alert(oStringObject.localeCompare("brick")); //ফলাফল "1" alert(oStringObject.localeCompare("yellow")); //ফলাফল "0" alert(oStringObject.localeCompare("zoo")); //ফলাফল "-1"
এই কোডে, স্ট্রিং "yellow" 3টি মানের সাথে তুলনা করা হয়, যেগুলো হল "brick", "yellow" এবং "zoo"। অক্ষরের ক্রমে ক্রমান্বয়ে সাজানোর কারণে, "yellow" "brick"-এর পরে অবস্থিত, তাই localeCompare() 1 ফলাফল প্রদান করে; "yellow" "yellow"-র সঙ্গে সমান, তাই localeCompare() 0 ফলাফল প্রদান করে; "zoo" "yellow"-র পরে অবস্থিত, localeCompare() -1 ফলাফল প্রদান করে। আবারো বলতে গেলে, ফলাফলটি কার্যকরীতার দ্বারা নির্ধারিত হয়, তাই localeCompare() মথুরা এইভাবে ব্যবহার করা উচিত:
var oStringObject1 = new String("yellow"); var oStringObject2 = new String("brick"); var iResult = oStringObject1.localeCompare(oStringObject2); if(iResult < 0) { alert(oStringObject1 + " comes before " + oStringObject2); } else if (iResult > 0) { alert(oStringObject1 + " comes after " + oStringObject2); } else { alert("The two strings are equal"); }
এই কাঠামোটি ব্যবহার করে, এই কোডটি সব ইমপ্লিমেন্টেশনেই সঠিকভাবে চলবে
localeCompare() মেথডের অসাধারণতা হল, যে অঞ্চল (locale, যা দেশ/অঞ্চল এবং ভাষাকেও নির্দেশ করে) এই মেথডটির কার্যকারিতা বোঝায়, যেখানে এই মেথডটি চালানো হয়। মার্কিন যুক্তরাষ্ট্রে, English ECMAScript ইমপ্লিমেন্টেশনের প্রমাণপত্র, localeCompare() বৈধতা বৈধতা, বড় অক্ষরগুলি ছোট অক্ষরগুলির পরে আবর্তিত হয়। কিন্তু, অন্যান্য অঞ্চলে, এই পরিস্থিতি কমপক্ষে নয়
slice() এবং substring()
ECMAScript-এর দ্বিতীয়ত, substring() এবং slice() মেথড দুটি থেকেই সাবস্ট্রিং মূল্য তৈরি করা হয়, যেগুলি সবসময়ই হয়তো সাবস্ট্রিংস এর সাবস্ট্রিংস ফিরিয়ে দেয়, এগুলি একটি বা দুটি পারামিটার নিয়ে আসে। প্রথম পারামিটারটি হল পাওয়া হওয়া সাবস্ট্রিংস এর ভাবগত স্থান, দ্বিতীয়টি (যদি ব্যবহার করা হয়) হল সাবস্ট্রিংস থেকে পাওয়া হওয়া সাবস্ট্রিংস এর শেষ স্থান (অর্থাৎ, ফিরিয়ে দেওয়া মূল্যের শেষ স্থানের অক্ষরটি সহযোগীতা করে না)। যদি দ্বিতীয়টি পারামিটারটি সংক্ষেপিত হয়, তবে শেষ স্থানটি স্ট্রিংস এর দৈর্ঘ্য হিসাবে নির্ধারিত হয়
concat() মথন মেথডের মতো, slice() এবং substring() মেথডগুলি String অবজেক্টের নিজের মূল্যকে পরিবর্তন করে না। তারা শুধুমাত্র প্রাথমিক String মূল্য ফিরিয়ে দেয়, String অবজেক্টকে অপরিবর্তিত রাখে।
var oStringObject = new String("hello world"); alert(oStringObject.slice('3')); // ফিরায় 'lo world' alert(oStringObject.substring('3')); // ফিরায় 'lo world' alert(oStringObject.slice('3', '7')); // ফিরায় 'lo w' alert(oStringObject.substring('3', '7')); // ফিরায় 'lo w'
এই উদাহরণে, slice() এবং substring() পদ্ধতির ব্যবহার এবং ফলাফল একই। যখন শুধুমাত্র 3 প্যারামিটার থাকে, দুটি পদ্ধতি উভয়ই 'lo world' ফিরায়, কারণ 'hello'-এর দ্বিতীয়টি 'l' 3-এর স্থানে অবস্থিত। 3 এবং 7 প্যারামিটার থাকলে, দুটি পদ্ধতি উভয়ই 'lo w' ফিরায় ( 'world'-এর 'o' 7-এর স্থানে অবস্থিত, তাই তা ফলাফলে সন্নিবেশিত হয় না)。
দুটি কার্যকর পদ্ধতি কেন থাকে? একত্রিশ কারণে, এই দুটি পদ্ধতি সম্পূর্ণরূপেই একই নয়, কিন্তু নেগাটিভ প্যারামিটার থাকলে, তাদের প্যারামিটারকে হারানোর পদ্ধতি কিছুটা ভিন্ন হয়。
নেগাটিভ প্যারামিটারের জন্য, slice() পদ্ধতি স্ট্রিংর দৈর্ঘ্য এবং প্যারামিটারকে যোগ করে, substring() পদ্ধতি তাকে 0-এর হিসাবে হারানো (অর্থাৎ, তা অবমূল্যাকৃত হয়)। উদাহরণস্বরূপ:
var oStringObject = new String("hello world"); alert(oStringObject.slice('-3')); // ফিরায় 'rld' alert(oStringObject.substring('-3')); // ফিরায় 'hello world' alert(oStringObject.slice('3, -4')); // ফিরায় 'lo w' alert(oStringObject.substring('3, -4')); // ফিরায় 'hel'
এভাবেই দেখা যায় slice() এবং substring() পদ্ধতির মূল ভিন্নতা。
যখন শুধুমাত্র -3 প্যারামিটার থাকে, slice() পদ্ধতি 'rld' ফিরায়, substring() পদ্ধতি 'hello world' ফিরায়। এটা কারণই যে, স্ট্রিং 'hello world' এর জন্য, slice('-3') slice('8')-এ রূপান্তরিত হয়, substring('-3') substring('0')-এ রূপান্তরিত হয়।
একইভাবে, 3 এবং -4 পারামিটার ব্যবহার করলেও, পার্থক্য খুবই স্পষ্ট।slice() কমান্ডটি slice(3, 7) হিসাবে রূপান্তরিত হয়, যেমন আগের উদাহরণটি, "lo w" হিসাবে ফিরিয়ে দেয়।আবার, substring() কমান্ডটি 3, 0 হিসাবে substring(3, 0) হিসাবে বোঝা হয়, যা প্রকৃতপক্ষে substring(0, 3) হয়, কারণ substring() কমান্ডটি সর্বদা সবচেয়ে ক্ষুদ্র সংখ্যা হিসাবে ভাবা হয় যাকে শুরুতের স্থান হিসাবে ব্যবহৃত হয়।তাই, substring("3, -4") কমান্ডটি "hel" হিসাবে ফিরিয়ে দেয়।এই শেষ লাইনটি এইভাবে মেথডগুলি কিভাবে ব্যবহার করা হয়েছে তা বুঝাতে ব্যবহৃত হয়।
toLowerCase()、toLocaleLowerCase()、toUpperCase() এবং toLocaleUpperCase()
শেষত, আমরা মাপ্রকার রূপান্তর নিয়ে আলোচনা করতে চাই।4টি মেথড রূপান্তর করতে ব্যবহৃত হয়
- toLowerCase()
- toLocaleLowerCase()
- toUpperCase()
- toLocaleUpperCase()
নাম থেকেই তাদের ব্যবহার স্পষ্ট, প্রথম দুইটি মেথড কোনো স্ট্রিংকে সম্পূর্ণ নীল করতে ব্যবহৃত হয়, আখীরের দুইটি মেথড কোনো স্ট্রিংকে সম্পূর্ণ বড় করতে ব্যবহৃত হয়。
toLowerCase() এবং toUpperCase() মেথডগুলি প্রকৃত, java.lang.String-এর একইভাবে মেথডের প্রতিকৃতির ওপর ভিত্তি করে রূপায়িত হয়。
toLocaleLowerCase() এবং toLocaleUpperCase() মেথডগুলি নির্দিষ্ট এলাকার ওপর নির্ভর করে (localeCompare() মেথডের মতো)।অনেক এলাকায়, এলাকা-নির্দিষ্ট মেথডগুলি সাধারণ মেথডের সঙ্গে একইভাবে কাজ করে।কিন্তু, কিছু ভাষা (যেমন তুর্কি) যুক্তরাষ্ট্রীয় আক্ষর বৃত্তি রূপান্তর নিয়ে নির্দিষ্ট নিয়ম প্রয়োগ করে, সুতরাং সঠিক রূপান্তর করতে এলাকা-নির্দিষ্ট মেথডগুলি ব্যবহার করা প্রয়োজন
var oStringObject = new String("Hello World"); alert(oStringObject.toLocaleUpperCase()); //প্রদর্শন করে "HELLO WORLD" alert(oStringObject.toUpperCase()); //প্রদর্শন করে "HELLO WORLD" alert(oStringObject.toLocaleLowerCase()); //প্রদর্শন করে "hello world" alert(oStringObject.toLowerCase()); // ফলাফল "hello world"
এই কোডটিতে,toUpperCase() ও toLocaleUpperCase() ফলাফল "HELLO WORLD" প্রদান করে, toLowerCase() ও toLocaleLowerCase() ফলাফল "hello world" প্রদান করে। সাধারণত, যদি কোন ভাষা কী এনকোডিং ব্যবহার করা হচ্ছে তা জানা যায় না, তবে আঞ্চলিক মধ্যস্থতা মথোদ্দতির মাধ্যমে ব্যবহার করা সুরক্ষিত
সুঝাওমনে রাখুন যে, String ওবজেক্টের সমস্ত এক্সিস ও মথোদ্দতি String মৌলিক মানের উপরও প্রয়োগ করা যায়, কারণ তারা মিথ্যা ওবজেক্ট
instanceof অপারেটর
typeof অপারেটরটির মাধ্যমে রেফারেন্স টাইপের মাধ্যমে মান সংরক্ষণ করা হলে একটি সমস্যা হয়, কোনও ধরনের ওবজেক্টকে যেমন কোনও সমস্ত ওবজেক্টকে সংরক্ষণ করা হয়, তারা সবকটি "object" ফলাফল দেয়। ECMAScript-এর মাধ্যমে instanceof অপারেটরটির মাধ্যমে এই সমস্যা সমাধান করা হয়。
instanceof অপারেটরটি typeof অপারেটরের মতো, এটি ব্যবহার করা হয় যেমন কোন ওবজেক্টকে কোন নির্দিষ্ট ধরনের ওবজেক্ট কি হয়েছে তা পরিশীলন করতে। typeof মথোদ্দতির সম্পর্কে ভিন্নতা হল, instanceof মথোদ্দতির মধ্যে উন্নয়নকারীকে স্পষ্টভাবে নির্দিষ্ট ধরনের ওবজেক্ট হতে প্রচেষ্টা করতে হয়। উদাহরণস্বরূপ:
var oStringObject = new String("hello world"); alert(oStringObject instanceof String); // ফলাফল "true"
এই কোডটি "ভাস্ট ওবজেক্টটি স্ট্রিং ওবজেক্টের উদাহরণ কি?" প্রশ্ন করছে। oStringObject নিশ্চিতভাবেই String ওবজেক্টের উদাহরণ, তাই ফলাফল "true"। typeof মথোদ্দতির মতো মোবিল না হলেও, typeof মথোদ্দতি "object" ফলাফল দিলেও instanceof মথোদ্দতির অত্যন্ত উপযোগী
- পূর্ববর্তী পৃষ্ঠা ECMAScript টাইপ কনভারশন
- পরবর্তী পৃষ্ঠা একক অপারেটর