জাভাস্ক্রিপ্টে গেটারস এবং সিটারস
সংক্ষিপ্ত বিবরণ
জাভাস্ক্রিপ্টে getters এবং সেটটার গণিত বৈশিষ্ট্য বা অ্যাক্সেসর সংজ্ঞায়িত করতে ব্যবহৃত হয় । একটি গুণিত সম্পত্তি হ'ল যা কোনও বস্তুর মান পেতে বা সেট করতে কোনও ফাংশন ব্যবহার করে। বেসিক থিওরি এমন কিছু করছে:
var user = { /* ... object with getters and setters ... */ };
user.phone = '+1 (123) 456-7890'; // updates a database
console.log( user.areaCode ); // displays '123'
console.log( user.area ); // displays 'Anytown, USA'
যখন কোনও সম্পত্তি অ্যাক্সেস করা হয় তখন পর্দার আড়ালে জিনিসগুলি স্বয়ংক্রিয়ভাবে করার জন্য দরকারী, যেমন সংখ্যায় সীমাবদ্ধ রাখা, স্ট্রিংগুলি পুনরায় ফর্ম্যাট করা, মান-পরিবর্তিত ইভেন্টগুলি ট্রিগার করা, সম্পর্কিত ডেটা আপডেট করা, ব্যক্তিগত সম্পত্তিগুলিতে অ্যাক্সেস সরবরাহ করা এবং আরও অনেক কিছু।
নীচের উদাহরণগুলি বেসিক সিনট্যাক্সটি দেখায়, যদিও তারা কেবল বিশেষ কিছু না করে কেবল অভ্যন্তরীণ বস্তুর মান অর্জন করে এবং সেট করে। রিয়েল-ওয়ার্ল্ড ক্ষেত্রে আপনি উল্লিখিত হিসাবে আপনার প্রয়োজন অনুসারে ইনপুট এবং / অথবা আউটপুট মান পরিবর্তন করতে হবে।
কীওয়ার্ডগুলি সেট / সেট করুন
ECMAScript 5 গণিত বৈশিষ্ট্য সংজ্ঞায়িত করার জন্য সমর্থন getএবং setকীওয়ার্ডগুলি। তারা IE 8 এবং নীচে বাদে সমস্ত আধুনিক ব্রাউজারের সাথে কাজ করে।
var foo = {
bar : 123,
get bar(){ return bar; },
set bar( value ){ this.bar = value; }
};
foo.bar = 456;
var gaz = foo.bar;
কাস্টম গেটারস এবং সিটারস
getএবং setসংরক্ষিত শব্দ নয়, যাতে আপনার নিজস্ব কাস্টম, ক্রস ব্রাউজারের গণিত সম্পত্তি ফাংশন তৈরি করতে সেগুলি ওভারলোড করা যায়। এটি যে কোনও ব্রাউজারে কাজ করবে।
var foo = {
_bar : 123,
get : function( name ){ return this[ '_' + name ]; },
set : function( name, value ){ this[ '_' + name ] = value; }
};
foo.set( 'bar', 456 );
var gaz = foo.get( 'bar' );
বা আরও কমপ্যাক্ট পদ্ধতির জন্য, একটি একক ফাংশন ব্যবহার করা যেতে পারে।
var foo = {
_bar : 123,
value : function( name /*, value */ ){
if( arguments.length < 2 ){ return this[ '_' + name ]; }
this[ '_' + name ] = value;
}
};
foo.value( 'bar', 456 );
var gaz = foo.value( 'bar' );
এরকম কিছু করা থেকে বিরত থাকুন যা কোড ব্লাট হতে পারে।
var foo = {
_a : 123, _b : 456, _c : 789,
getA : function(){ return this._a; },
getB : ..., getC : ..., setA : ..., setB : ..., setC : ...
};
উপরোক্ত উদাহরণগুলির জন্য, ব্যবহারকারীদের কেবল foo.barবনাম করা থেকে বিরত রাখতে foo.get( 'bar' )এবং "কুক্কযুক্ত" মান পাওয়ার জন্য অভ্যন্তরীণ সম্পত্তির নামগুলি আন্ডারস্কোর দিয়ে বিমূর্ত করা হয়। সম্পত্তিটি অ্যাক্সেস করা হচ্ছে তার নামের উপর নির্ভর করে আপনি বিভিন্ন কাজ করতে শর্তযুক্ত কোড ব্যবহার করতে পারেন (এর মাধ্যমেname প্যারামিটারের ) ।
Object.defineProperty ()
ব্যবহারকারী Object.defineProperty()এবং সেটটার যুক্ত করার অন্য উপায়, এবং সেগুলি সংজ্ঞায়িত হওয়ার পরে অবজেক্টগুলিতে ব্যবহার করা যেতে পারে। এটি কনফিগারযোগ্য এবং গণ্যমান্য আচরণ সেট করতেও ব্যবহার করা যেতে পারে। এই সিনট্যাক্সটি আইই 8 এর সাথেও কাজ করে তবে দুর্ভাগ্যক্রমে কেবল ডোম অবজেক্টে।
var foo = { _bar : 123 };
Object.defineProperty( foo, 'bar', {
get : function(){ return this._bar; },
set : function( value ){ this._bar = value; }
} );
foo.bar = 456;
var gaz = foo.bar;
__defineGetter __ ()
অবশেষে, __defineGetter__()অন্য একটি বিকল্প। এটি অবহেলিত, তবে এখনও ওয়েবের চারপাশে ব্যাপকভাবে ব্যবহৃত হয়েছে এবং শীঘ্রই যে কোনও সময় অদৃশ্য হওয়ার সম্ভাবনা নেই। এটি আইই 10 এবং নীচে বাদে সমস্ত ব্রাউজারে কাজ করে। যদিও অন্যান্য বিকল্পগুলি নন-আইইতেও ভাল কাজ করে, সুতরাং এটি এতো কার্যকর নয়।
var foo = { _bar : 123; }
foo.__defineGetter__( 'bar', function(){ return this._bar; } );
foo.__defineSetter__( 'bar', function( value ){ this._bar = value; } );
আরও লক্ষণীয় যে পরের উদাহরণগুলিতে পুনরাবৃত্তি এড়াতে প্রবেশকারীর নামের চেয়ে অভ্যন্তরীণ নামগুলি অবশ্যই আলাদা হওয়া উচিত (যেমন, foo.barকলিং foo.get(bar)কলিং foo.barকলিংfoo.get(bar) ...) ।
আরো দেখুন
MDN পান , সেট করুন ,
অবজেক্ট.ডিফাইনপ্রোপার্টি () , __DinefineGetter __ () , __defineSetter __ ()
MSDN
IE8 গেটর সাপোর্ট