متدهای شیء در نسخهٔ ES5

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو

نسخه ECMAScript 5 متد شی زیادی به جاوا اسکریپت اضافه کرد.[۱]

 1// Adding or changing an object property
 2Object.defineProperty(object, property, descriptor)
 3
 4// Adding or changing many object properties
 5Object.defineProperties(object, descriptors)
 6
 7// Accessing Properties
 8Object.getOwnPropertyDescriptor(object, property)
 9
10// Returns all properties as an array
11Object.getOwnPropertyNames(object)
12
13// Returns enumerable properties as an array
14Object.keys(object)
15
16// Accessing the prototype
17Object.getPrototypeOf(object)
18
19// Prevents adding properties to an object
20Object.preventExtensions(object)
21// Returns true if properties can be added to an object
22Object.isExtensible(object)
23
24// Prevents changes of object properties (not values)
25Object.seal(object)
26// Returns true if object is sealed
27Object.isSealed(object)
28
29// Prevents any changes to an object
30Object.freeze(object)
31// Returns true if object is frozen
32Object.isFrozen(object)

عوض کردن مقدار یک ویژگی

شیوه نوشتار

Object.defineProperty(object, property, {value : value})

این مثال مقدار یک ویژگی را تغییر می‌دهد:

مثال

1var person = {
2  firstName: "John",
3  lastName : "Doe",
4  language : "EN"
5};
6
7// Change a property
8Object.defineProperty(person, "language", {value : "NO"});


مشاهدهٔ نتیجه


تغییر دادن متا دیتاها

ES5 به ویژگی‌های متا دیتای زیر اجازه تغییر می‌دهد:

1writable : true      // Property value can be changed
2enumerable : true    // Property can be enumerated
3configurable : true  // Property can be reconfigured
1writable : false     // Property value can not be changed
2enumerable : false   // Property can be not enumerated
3configurable : false // Property can be not reconfigured

ES5 اجازه می‌دهد که متدهای Getter و setter تغییر پیدا کنند:

1// Defining a getter
2get: function() { return language }
3// Defining a setter
4set: function(value) { language = value }

این مثال language را فقط خواندنی می‌کند:

Object.defineProperty(person, "language", {writable:false});

این مثال ویژگی language را غیرقابل شمارش یا enumerable می‌کند:

Object.defineProperty(person, "language", {enumerable:false});

لیست کردن تمام ویژگی ها

این مثال کلیه ویژگی‌های یک شی را لیست می‌کند:

مثال

1var person = {
2  firstName: "John",
3  lastName : "Doe"
4  language : "EN"
5};
6
7Object.defineProperty(person, "language", {enumerable:false});
8Object.getOwnPropertyNames(person);  // Returns an array of properties


مشاهدهٔ نتیجه


لیست کردن ویژگی های قابل شمارش (Enumerable)

این مثال فقط ویژگی‌های قابل شمارش یک شی را لیست می‌کند:

مثال

1var person = {
2  firstName: "John",
3  lastName : "Doe"
4  language : "EN"
5};
6
7Object.defineProperty(person, "language", {enumerable:false});
8Object.keys(person);  // Returns an array of enumerable properties


مشاهدهٔ نتیجه


اضافه کردن یک ویژگی

این مثال یک ویژگی جدید به یک شی اضافه می‌کند:

مثال

1// Create an object:
2var person = {
3  firstName: "John",
4  lastName : "Doe",
5  language : "EN"
6};
7
8// Add a property
9Object.defineProperty(person, "year", {value:"2008"});


مشاهدهٔ نتیجه


اضافه کردن متدهای Getter و Setter

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

مثال

1//Create an object
2var person = {firstName:"John", lastName:"Doe"};
3
4// Define a getter
5Object.defineProperty(person, "fullName", {
6  get : function () {return this.firstName + " " + this.lastName;}
7});


مشاهدهٔ نتیجه


مثال یک شمارنده

مثال

 1// Define object
 2var obj = {counter:0};
 3
 4// Define setters
 5Object.defineProperty(obj, "reset", {
 6  get : function () {this.counter = 0;}
 7});
 8Object.defineProperty(obj, "increment", {
 9  get : function () {this.counter++;}
10});
11Object.defineProperty(obj, "decrement", {
12  get : function () {this.counter--;}
13});
14Object.defineProperty(obj, "add", {
15  set : function (value) {this.counter += value;}
16});
17Object.defineProperty(obj, "subtract", {
18  set : function (i) {this.counter -= i;}
19});
20
21// Play with the counter:
22obj.reset;
23obj.add = 5;
24obj.subtract = 1;
25obj.increment;
26obj.decrement;


مشاهدهٔ نتیجه


منابع آموزشی