‎‎ابزارهاي دسترسي به شئ جاوااسكريپتJavaScript Object Accessors -‎

Previous >    <Next  

‎JavaScript Accessors (Getter and Settes)‎

‎‎ابزار هاي دسترسي دريافت كننده وتنظيم كننده

ECMAScript 5 (ES5 2009)‎‎دريافت كننده ها‎(Getters)‎ وتنظيم كننده ها ‎(Setters)‎‎را معرفي كرده است .

‎دريافت كننده ها وتنظيم كننده ها به ما اجازه ميدهند كه ويژگي هاي محاسبه شده ‎(Object Accessor)‎‎را تعريف كنيم.

‎‎دريافت كننده جاوااسكريپتJavaScript Getter (The get Keywords) -‎

‎‎مثال ـ اين مثال از ويژگيlang براي بدست آوردن مقدار ويژگي language استفاده ميكند .

// Create an object:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "en",
  get lang() {
    return this.language;
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;

--(go to editor for change code and run)

‎‎تنظيم كننده جاوااسكزيپتJavaScript Setter (The set Keyword) -‎

‎‎مثال ـ در اين مثال از ويژگيlang براي تنظيم ويا مقدار دهي به ويژگي language استفاده ميشود .

const person = {
  firstName: "John",
  lastName: "Doe",
  language: "",
  set lang(lang) {
    this.language = lang;
  }
};

// Set an object property using a setter:
person.lang = "en";

// Display data from the object:
document.getElementById("demo").innerHTML = person.language;

--(go to editor for change code and run)

‎در اين مثال نتيجهperson.lang باperson.language يكي است . اما ميتواند اين يكسان نبوده و person.lang‎روالي پيچيده تر از آن داشته باشد . در مثالهاي بعدي اين حالت وجود دارد.

‎‎JavaScript Function or Getter?‎‎

‎‎دريافت كننده يا تابع جاوااسكريپت

‎‎چه تفاوتي بين دو مثال زير وجود دارد..

‎‎مثال 1 ـ دريافت كننده تابع

const person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

// Display data from the object using a method:
document.getElementById("demo").innerHTML = person.fullName();

--(go to editor for change code and run)

‎‎مثال 2 ـ دريافت كنندهgetter

const person = {
  firstName: "John",
  lastName: "Doe",
  get fullName() {
    return this.firstName + " " + this.lastName;
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.fullName;

--(go to editor for change code and run)

‎‎در مثال اول دسترسي به ويژگيfullName از طريق فرم تابعي يعني person.fullName()‎ ميباشد .

‎‎در مثال دوم دسترسي به ويژگيfullName باويژگيperson.fullName صورت گرفته است .

‎‎‎دومين مثال براي دسترسي فرمت ساده تري را ارائه ميكند.

‎‎كيفيت دادهData Quality -‎

‎‎جاوااسكريپت با دريافت كننده و تنظيم كنندها مي تواند امنيت داده اي بهتري را برقرار كند.

‎‎مثال ـ استفاده از ويژگيlang وبرگشت مقدار ويژگي language بصورت حروف بزرگ

// Create an object:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "en",
  get lang() {
    return this.language.toUpperCase();
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;

--(go to editor for change code and run)

‎‎مثال ـ دراين مثال ويژگي ويژگيlanguage با حروف بزرگ تنظيم ميشود .

const person = {
  firstName: "John",
  lastName: "Doe",
  language: "",
  set lang(lang) {
    this.language = lang.toUpperCase();
  }
};

// Set an object property using a setter:
person.lang = "en";

// Display data from the object:
document.getElementById("demo").innerHTML = person.language;

--(go to editor for change code and run)

‎‎دلايل استفاده از دريافت كننده و تنظيم كننده مطابق زير است:

‎‎متد داخلي‎ Object.defineProperty()‎‎ -‎

ObjectProperty( ) ‎‎براي اضافه كردن دريافت كننده وتنظيم كننده ‎اشياء مورد استفاه قرار ميگيرد.

‎‎مثال ـ افزايش شمارنده

// Define object
const obj = {counter : 0};

// Define setters and getters
Object.defineProperty(obj, "reset", {
  get : function () {this.counter = 0;}
});
Object.defineProperty(obj, "increment", {
  get : function () {this.counter++;}
});
Object.defineProperty(obj, "decrement", {
  get : function () {this.counter--;}
});
Object.defineProperty(obj, "add", {
  set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, "subtract", {
  set : function (value) {this.counter -= value;}
});

// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

--(go to editor for change code and run)


Previous >    <Next