متدهای شیء در نسخهٔ ES5 جاوا اسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
۱تعریف شیء
۲ویژگی‌های اشیاء
۳متدهای اشیاء
۴روش‌های دسترسی به شیء
۵سازنده‌های شیء
۶شکل اصلی شیء
۷متدهای شیء در نسخهٔ ES5
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مثال‌های جاوا اسکریپت
مرجع جاوا اسکریپت

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

متدهای جدید شیء در ES5

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

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

شیوه نوشتار

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

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

مثال

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

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

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

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

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

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

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

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

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

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

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

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

مثال

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

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

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

مثال

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

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

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

مثال

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

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

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

مثال

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

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

مثال

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


منابع آموزشی