প্রথমে মনে রাখবেন যে জাভাস্ক্রিপ্টটি মূলত একটি ক্লাস-ভিত্তিক ভাষা 1 এর পরিবর্তে প্রোটোটাইপাল ভাষা । Foo
কোন শ্রেণি নয়, এটি একটি ফাংশন, যা একটি বস্তু। আপনি কী - ওয়ার্ডটি ব্যবহার করে সেই ফাংশন থেকে কোনও অবজেক্ট ইনস্ট্যান্ট করতে পারেন new
যা আপনাকে স্ট্যান্ডার্ড ওওপি ভাষায় শ্রেণীর মতো কিছু তৈরি করতে দেয় allow
আমি __proto__
বেশিরভাগ সময় উপেক্ষা করার পরামর্শ দেব কারণ এটিতে ক্রস ব্রাউজারের দুর্বল সমর্থন রয়েছে এবং পরিবর্তে কীভাবে prototype
কাজ করে তা শিখতে মনোনিবেশ করব ।
আপনার যদি কোনও ফাংশন 2 থেকে তৈরি কোনও অবজেক্টের উদাহরণ থাকে এবং আপনি কোনওভাবেই এর সদস্যদের (পদ্ধতি, বৈশিষ্ট্য, বৈশিষ্ট্য, ধ্রুবক ইত্যাদি) অ্যাক্সেস করেন তবে অ্যাক্সেস প্রোটোটাইপ শ্রেণিবদ্ধের নিচে প্রবাহিত হবে যতক্ষণ না এটি (ক) সন্ধান করে সদস্য, বা (খ) অন্য প্রোটোটাইপ খুঁজে পাচ্ছে না।
হায়ারার্কি বলা হয়ে যাওয়া বস্তুর উপরে শুরু হয় এবং তার প্রোটোটাইপ অবজেক্টটি অনুসন্ধান করে। প্রোটোটাইপ অবজেক্টের যদি প্রোটোটাইপ থাকে তবে এটি পুনরাবৃত্তি করে, যদি কোনও প্রোটোটাইপ না থাকে undefined
তবে ফিরে আসে।
উদাহরণ স্বরূপ:
foo = {bar: 'baz'};
console.log(foo.bar); // logs "baz"
foo = {};
console.log(foo.bar); // logs undefined
function Foo(){}
Foo.prototype = {bar: 'baz'};
f = new Foo();
console.log(f.bar);
// logs "baz" because the object f doesn't have an attribute "bar"
// so it checks the prototype
f.bar = 'buzz';
console.log( f.bar ); // logs "buzz" because f has an attribute "bar" set
আমার কাছে দেখে মনে হচ্ছে আপনি ইতিমধ্যে এই "বেসিক" অংশগুলি কমপক্ষে কিছুটা বুঝতে পেরেছেন তবে নিশ্চিত হওয়ার জন্য আমার এগুলি স্পষ্ট করে দেওয়া দরকার।
জাভাস্ক্রিপ্টে, সমস্ত কিছুই একটি অবজেক্ট 3 ।
সব একটা জিনিস।
function Foo(){}
কেবল একটি নতুন ফাংশন সংজ্ঞায়িত করে না, এটি একটি নতুন ফাংশন অবজেক্টকে সংজ্ঞায়িত করে যা ব্যবহার করে অ্যাক্সেস করা যায় Foo
।
এ কারণেই আপনি Foo
এর প্রোটোটাইপটি অ্যাক্সেস করতে পারেনFoo.prototype
।
আপনি যা করতে পারেন তা আরও কার্যকারিতা সেট করে Foo
:
Foo.talk = function () {
alert('hello world!');
};
এই নতুন ফাংশনটি ব্যবহার করে অ্যাক্সেস করা যেতে পারে:
Foo.talk();
আমি আশা করি এতক্ষণে আপনি কোনও ফাংশন অবজেক্ট এবং স্থির পদ্ধতিতে ফাংশনগুলির মধ্যে একটি মিল লক্ষ্য করছেন।
চিন্তা করুন f = new Foo();
একটি বর্গ উদাহরণস্বরূপ তৈরি, যেমন Foo.prototype.bar = function(){...}
বর্গ জন্য একটি ভাগ পদ্ধতি সংজ্ঞা, এবং Foo.baz = function(){...}
বর্গ জন্য একটি পাবলিক স্ট্যাটিক পদ্ধতি সংজ্ঞায়িত করে।
ইসমাস্ক্রিপ্ট ২০১৫ এ ধরণের ঘোষণার জন্য বিভিন্ন ধরণের ঘোষণার জন্য প্রচলিত চিনির প্রচলন করেছে যাতে এগুলি পড়া সহজতর হয়ে ওঠে implement পূর্ববর্তী উদাহরণটি তাই লেখা যেতে পারে:
class Foo {
bar() {...}
static baz() {...}
}
যা এই bar
হিসাবে পরিচিত হতে দেয় :
const f = new Foo()
f.bar()
এবং baz
বলা যেতে হবে:
Foo.baz()
1: class
ECMAScript 5 স্পেসিফিকেশনের একটি "ভবিষ্যত সংরক্ষিত শব্দ" ছিল , তবে ES6 class
কীওয়ার্ডটি ব্যবহার করে ক্লাস নির্ধারণের দক্ষতার পরিচয় দেয় ।
2: মূলত কোনও নির্মাণকারীর দ্বারা তৈরি ক্লাসের উদাহরণ, তবে অনেকগুলি নানান পার্থক্য রয়েছে যা আমি আপনাকে বিভ্রান্ত করতে চাই না
3: আদিম মান - যার মধ্যে অন্তর্ভুক্ত undefined
,, null
বুলিয়ান, সংখ্যা এবং স্ট্রিংগুলি প্রযুক্তিগতভাবে বস্তু নয় কারণ এগুলি নিম্ন স্তরের ভাষা বাস্তবায়ন। বুলিয়ানস, সংখ্যা এবং স্ট্রিংগুলি প্রোটোটাইপ চেইনের সাথে এখনও ইন্টারঅ্যাক্ট করে যেন তারা বস্তু ছিল, সুতরাং এই উত্তরের উদ্দেশ্যে, তারা যথেষ্ট না হলেও তাদের "অবজেক্ট" বিবেচনা করা আরও সহজ।
Foo.talk = function ...