ES6 getters এবং setters জাভা অনুরূপ ধারণা তুলনায় যথেষ্ট আলাদা প্রেরণা আছে।
জাভাতে, গ্রাহকরা এবং সেটটাররা একটি শ্রেণিকে জাভাবিয়ান সংজ্ঞায়িত করার অনুমতি দেয়। গেটার্স এবং সিটারগুলির মূল বিষয়টি হ'ল এটি শিমটি পাবলিক ফিল্ডগুলির দ্বারা বোঝানো থেকে সম্পূর্ণ orthogonal "ইন্টারফেস" পেতে দেয় have সুতরাং আমার কাছে এমন একটি ক্ষেত্রের "নাম" থাকতে পারে যা জাভাবিয়ান সম্পত্তি নয়, এবং আমার কাছে জাভাবিয়ান সম্পত্তি "ঠিকানা" থাকতে পারে যা ক্ষেত্র নয়।
জাভাবিয়ান বৈশিষ্ট্যগুলি জাভা প্রতিবিম্বের মাধ্যমে কয়েক হাজার ফ্রেমওয়ার্ক (উদাহরণস্বরূপ হাইবারনেট) দ্বারা "আবিষ্কারযোগ্য"। সুতরাং, গেটর এবং সেটটারগুলি শিমের বৈশিষ্ট্যগুলি "এক্সপোজারিং" করার জন্য একটি স্ট্যান্ডার্ড পদ্ধতির অংশ।
গেটার্স এবং সেটটারগুলি, ফাংশন হওয়ার কারণে এর মানও রয়েছে যে তারা বাস্তবায়নটিকে "বিমূর্ত" করে। এটি কোনও ক্ষেত্র বা গণিত ("সিন্থেটিক") মান হতে পারে। সুতরাং আমার কাছে যদি "জিপকোড" নামে একটি বিনের সম্পত্তি থাকে তবে এটি স্ট্রিং স্ট্রিং হিসাবে শুরু হয়। এখন ধরা যাক আমি এটিকে ঠিকানা / শহর / রাজ্য থেকে গুণিত মান হিসাবে পরিবর্তন করতে চাই?
যদি আমি কোনও ক্ষেত্র ব্যবহার করি তবে এই কোডটি বিরতি দেয়:
String zipcode = address.zipcode();
তবে আমি যদি গেটর ব্যবহার করি তবে এটি ভাঙবে না:
String zipcode = address.getZipcode();
জাভাস্ক্রিপ্ট জাভাবিংস মত কিছুই নেই। যতক্ষণ না আমি পড়েছি, জিইটি এবং এসইটি-র উদ্দেশ্যে মানটি পূর্বোক্ত "সিন্থেটিক" (গণিত) বৈশিষ্ট্যে সীমাবদ্ধ।
তবে এটি জাভার চেয়ে কিছুটা ভাল, যখন জাভা আপনাকে কোনও "ক্ষেত্র" কে কোনও পদ্ধতিতে রূপান্তর করতে দেয় না, ES6 GET এবং SET এটির অনুমতি দেয়।
তা হ'ল, যদি আমার থাকে:
var zipcode = address.zipcode;
যদি আমি জিপকোডকে কোনও স্ট্যান্ডার্ড অবজেক্ট প্রোপার্টি থেকে একজন গেটরে পরিণত করি তবে উপরের কোডটি এখন জিইটি ফাংশনটিকে কল করে।
মনে রাখবেন যে আমি যদি সংজ্ঞাতে জিইটি অন্তর্ভুক্ত না করি তবে এটি জিপকোড জিইটি পদ্ধতিটি গ্রহণ করবে না। পরিবর্তে, এটি কেবলমাত্র ভারে পিনকোড ফাংশনটি বরাদ্দ করবে।
সুতরাং আমি মনে করি এটি বেটউইন জাভা এবং জাভাস্ক্রিপ্ট ইএস 6 গেটরস এবং সেটটারগুলি বোঝার জন্য কিছু গুরুত্বপূর্ণ পার্থক্য।