প্রশ্নের জবাব ইতিমধ্যে উত্তর হয়েছে বলে মনে হচ্ছে তবে ওপি আমাদের জাভাতে যেমন করে এবং নির্বাচিত উত্তর যথেষ্ট নয় (ইমো) তেমন শ্রেণি এবং অবজেক্টের অ্যাক্সেস পেতে চায়।
নিম্নলিখিত ব্যাখ্যার সাথে আমরা কোনও বস্তুর শ্রেণি পেতে পারি (এটি আসলে জাভাস্ক্রিপ্টে প্রোটোটাইপ বলে)।
var arr = new Array('red', 'green', 'blue');
var arr2 = new Array('white', 'black', 'orange');
আপনি এই জাতীয় সম্পত্তি যুক্ত করতে পারেন:
Object.defineProperty(arr,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
তবে .lastসম্পত্তি কেবল ' arr' অবজেক্টে উপলব্ধ হবে যা অ্যারে প্রোটোটাইপ থেকে ইনস্ট্যান্ট করা আছে। সুতরাং, .lastঅ্যারে প্রোটোটাইপ থেকে তাত্ক্ষণিকভাবে সমস্ত বস্তুর জন্য সম্পত্তি উপলব্ধ থাকার .lastজন্য আমাদের অ্যারে প্রোটোটাইপের জন্য সম্পত্তিটি সংজ্ঞায়িত করতে হবে :
Object.defineProperty(Array.prototype,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
এখানে সমস্যাটি হ'ল, আপনাকে জানতে হবে কোন অবজেক্টের ধরণ (প্রোটোটাইপ) 'arr ' এবং ' arr2' ভেরিয়েবলগুলি সাথে সম্পর্কিত! অন্য কথায়, যদি আপনি ' arr' অবজেক্টের ক্লাস টাইপ (প্রোটোটাইপ) না জানেন তবে আপনি তাদের জন্য কোনও সম্পত্তি নির্ধারণ করতে পারবেন না। উপরের উদাহরণে, আমরা জানি যে অ্যারেরটি অ্যারে অবজেক্টের উদাহরণ, এজন্যই আমরা অ্যারের জন্য একটি সম্পত্তি সংজ্ঞায়িত করতে অ্যারে.প্রোটোটাইপ ব্যবহার করেছি। তবে আমরা যদি ' arr' এর ক্লাস (প্রোটোটাইপ) না জানতাম তবে কী হবে ?
Object.defineProperty(arr.__proto__,'last2', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
আপনি দেখতে পাচ্ছেন যে, না জেনে 'arr ' একটি অ্যারে আমরা ' arr' ব্যবহার করে ' arr.__proto__' শ্রেণীর উল্লেখ করে একটি নতুন সম্পত্তি যুক্ত করতে পারি ।
arrএটি অ্যারের উদাহরণ না জেনে আমরা ' ' এর প্রোটোটাইপটি অ্যাক্সেস করেছি এবং আমি মনে করি ওপি এটিই বলেছিল।