با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در بخش های قبلی فصل جاری با متدها ،خصوصیات ، ساختارها و … در مورد آبجکت های جاوا اسکریپت پرداختیم، در آخرین بخش این فصل قصد داریم به مباحثی پیرامون متدهای آبجکت ES5 در جاوا اسکریپت و چگونگی کار با آن ها بپردازیم، در استاندارد ECMAScript 5 که در بخش های قبلی نیز به بررسی آن پرداخته بودیم، تعداد زیادی متدهای کار با آبجکت ها ارائه شد که هر یک کاربرد خاص خود را در مقادیر آبجکت ها دارد، در ادامه ی این بخش به بررسی متدهای آبجکت ES5 در جاوا اسکریپت می پردازیم، با ما همراه باشید.
در این مبحث سعی شده تا متدهای آبجکت ES5 در جاوا اسکریپت و کاربردهای آن در قالب نمونه کد ارائه شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // Adding or changing an object property Object.defineProperty(object, property, descriptor) // Adding or changing many object properties Object.defineProperties(object, descriptors) // Accessing Properties Object.getOwnPropertyDescriptor(object, property) // Returns all properties as an array Object.getOwnPropertyNames(object) // Returns enumerable properties as an array Object.keys(object) // Accessing the prototype Object.getPrototypeOf(object) // Prevents adding properties to an object Object.preventExtensions(object) // Returns true if properties can be added to an object Object.isExtensible(object) // Prevents changes of object properties (not values) Object.seal(object) // Returns true if object is sealed Object.isSealed(object) // Prevents any changes to an object Object.freeze(object) // Returns true if object is frozen Object.isFrozen(object) |
سینتکس :
1 | Object.defineProperty(object, property, {value : value}) |
این مثال مقدار یک خصوصیت را تغییر می دهد :
1 2 3 4 5 6 7 8 | var person = { firstName: "John", lastName : "Doe", language : "EN" }; // Change a property Object.defineProperty(person, "language", {value : "NO"}); |
ES5 اجازه ی تغییر خصوصیت meta data زیر را می دهد :
1 2 3 | writable : true // Property value can be changed enumerable : true // Property can be enumerated configurable : true // Property can be reconfigured |
1 2 3 | writable : false // Property value can not be changed enumerable : false // Property can be not enumerated configurable : false // Property can be not reconfigured |
ES5 اجازه ی تغییر دادن getters و setters را می دهد :
1 2 3 4 | // Defining a getter get: function() { return language } // Defining a setter set: function(value) { language = value } |
این مثال زبان را read-only می کند :
1 | Object.defineProperty(person, "language", {writable:false}); |
این مثال زبان را قابل شمارش می کند.
1 | Object.defineProperty(person, "language", {enumerable:false}); |
این مثال تمام خصوصیات یک آبجکت را لیست می کند :
1 2 3 4 5 6 7 8 | var person = { firstName: "John", lastName : "Doe" language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person); // Returns an array of properties |
این مثال فقط تمام خصوصیات قابل شمارش یک آبجکت را لیست می کند :
1 2 3 4 5 6 7 8 | var person = { firstName: "John", lastName : "Doe" language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person); // Returns an array of enumerable properties |
این مثال یک خصوصیت جدید را به یک آبجکت اضافه می کند :
1 2 3 4 5 6 7 8 9 | // Create an object: var person = { firstName: "John", lastName : "Doe", language : "EN" }; // Add a property Object.defineProperty(person, "year", {value:"2008"}); |
متد ()Object.defineProperty همچنین می تواند برای افزودن Getters و Setters استفاده شود.
1 2 3 4 5 6 7 | //Create an object var person = {firstName:"John", lastName:"Doe"}; // Define a getter Object.defineProperty(person, "fullName", { get : function () {return this.firstName + " " + this.lastName;} }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // Define object var obj = {counter:0}; // Define setters 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 (i) {this.counter += i;} }); // Play with the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; |
در مورد استاندارد ECMAScript 5 که یکی از ویرایش های مهم جاوا اسکریپت می باشد، در بخش های قبلی مباحث متعددی را بررسی کردیم، و در ادامه و تکمیل مباحث قبلی این استاندارد، در این بخش به بررسی متدهای آبجکت ES5 در جاوا اسکریپت پرداختیم.