جسٹاگرافک آئیٹم کا متبادل

JavaScript 访问器(Getter 和 Setter)

ECMAScript 5 (2009) 引入了 Getter 和 Setter。

Getter 和 Setter 允许您定义对象访问器(被计算的属性)。

JavaScript Getter(get 关键词)

本例使用 lang 属性来获取 language 属性的值。

مثال

// اشیاء ایجاد می‌کند:
ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  language: "en",
  گٹ: لانگ() {
    return this.language;
  }
};
// از گتتر برای نمایش داده‌های موجود در اشیاء استفاده می‌شود:
document.getElementById("demo").innerHTML = person.lang;

آپ خود کا تجربہ کریں

JavaScript Setter(set 关键词)

本例使用 lang 属性来设置 language 属性的值。

مثال

ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  language: "",
  سٹ: لانگ(لانگ) {
    this.language = lang;
  }
};
// از سیترونمو برای تنظیم ویژگی‌های اشیاء استفاده می‌شود:
person.lang = "en";
// داده‌های موجود در اشیاء را نمایش می‌دهد:
document.getElementById("demo").innerHTML = person.language;

آپ خود کا تجربہ کریں

JavaScript 函数还是 Getter?

下面两个例子的区别在哪里?

例子 1

ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};
// 使用方法来显示来自对象的数据:
document.getElementById("demo").innerHTML = person.fullName();

آپ خود کا تجربہ کریں

例子 2

ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  get fullName() {
    return this.firstName + " " + this.lastName;
  }
};
// از گتتر برای نمایش داده‌های موجود در اشیاء استفاده می‌شود:
document.getElementById("demo").innerHTML = person.fullName;

آپ خود کا تجربہ کریں

例子 1 以函数形式访问 fullName:person.fullName()。

例子 2 以属性形式访问 fullName:person.fullName。

第二个例子提供了更简洁的语法。

数据质量

使用 getter 和 setter 时,JavaScript 可以确保更好的数据质量。

در این مثال، از lang 属性以大写形式返回 language 属性的值:

مثال

// اشیاء ایجاد می‌کند:
ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  language: "en",
  گٹ: لانگ() {
    بازگرداند: این.language.toUpperCase();
  }
};
// از گتتر برای نمایش داده‌های موجود در اشیاء استفاده می‌شود:
document.getElementById("demo").innerHTML = person.lang;

آپ خود کا تجربہ کریں

در این مثال، از lang ویژگی‌ها ارزش‌های بزرگ‌تر را در language در ویژگی‌ها:

مثال

ور شخص = {
  firstName: "Bill",
  lastName: "Gates",
  language: "",
  سٹ: لانگ(لانگ) {
    این.language = لانگ.toUpperCase();
  }
};
// از سیترونمو برای تنظیم ویژگی‌های اشیاء استفاده می‌شود:
person.lang = "en";
// داده‌های موجود در اشیاء را نمایش می‌دهد:
document.getElementById("demo").innerHTML = person.language;

آپ خود کا تجربہ کریں

چرا از گتتر و سیترونمو استفاده می‌کنیم؟

  • این از دستور زبان ساده‌تری ارائه می‌دهد
  • این اجازه می‌دهد که نحوه‌ی استفاده از ویژگی‌ها و روش‌ها یکسان باشد
  • این می‌تواند از کیفیت داده‌ها بهتر اطمینان حاصل کند
  • برای کارهای پس‌زمینه مفید است

یک نمونه شمارنده

مثال

ور اوبج: {
  کانترر: 0,
  گٹ: ریست() {
    این کانترر = 0;
  },
  گٹ: اضافه کردن() {
    این کانترر++;
  },
  گٹ: کم کردن() {
    این کانترر--;
  },
  سٹ: اضافه کردن(ارزش) {
    این کانترر += ارزش;
  },
  سٹ: ازکم کردن(ارزش) {
    این کانترر -= ارزش;
  }
};
// شمارش کار کا آپریشن:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
Object.defineProperty()

آپ خود کا تجربہ کریں

Object.defineProperty() روش‌ها نیز می‌توانند برای اضافه کردن گتتر و سیترونمو استفاده شوند:

مثال

// اشیاء تعریف می‌کند
ور اوبج: {کانترر: 0},
// سیترونمو تعریف می‌کند
Object.defineProperty(obj, "reset", {
  گٹ: فانکشن () {این کانترر = 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;}
});
// شمارش کار کا آپریشن:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

آپ خود کا تجربہ کریں

بrowsر سپورٹ

اینٹرنیٹ ایکسپلورر 8 یا اس سے پچھلے کی نسلیں گٹر اور سیٹر کو نہیں سپورٹ کرتی ہیں:

ہاں 9.0 ہاں ہاں ہاں