जावास्क्रिप्ट ES5 ऑब्जैक्ट मथड

एससीएमएसक्रिप्ट 5 (2009) ने जेसक्रिप्ट में कई नए ऑब्जेक्ट विधियाँ जोड़ी हैं।

管理对象

// 以现有对象为原型创建对象
Object.create()
// 添加或更改对象属性
Object.defineProperty(object, property, descriptor)
// 添加或更改对象属性
Object.defineProperties(object, descriptors)
// 访问属性
Object.getOwnPropertyDescriptor(object, property)
// 以数组返回所有属性
Object.getOwnPropertyNames(object)
// 访问原型
Object.getPrototypeOf(object)
// 以数组返回可枚举属性
Object.keys(object)

ऑब्जैक्ट को सुरक्षित करना

// ऑब्जैक्ट में गुण जोड़ने से रोकेगा
Object.preventExtensions(object)
// यदि गुण ऑब्जैक्ट में जोड़ा जा सकता है, तो true वापस करेगा
Object.isExtensible(object)
// ऑब्जैक्ट के गुण (नहीं मूल्य) को परिवर्तन से रोकेगा
Object.seal(object)
// यदि ऑब्जैक्ट शील्ड किया गया है, तो true वापस करेगा
Object.isSealed(object)
// ऑब्जैक्ट को किसी भी परिवर्तन से रोकेगा
Object.freeze(object)
// यदि ऑब्जैक्ट फ्रीज किया गया है, तो true वापस करेगा
Object.isFrozen(object)

गुण का मूल्य बदलना

व्याकरण

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

इंस्टांस

इस उदाहरण में गुण का मूल्य बदला जाए:

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// गुण संशोधित करना
Object.defineProperty(person, "language", {value : "NO"});

अपने आप प्रयास करें

मेटाडाटा बदलना

ES5 अनुमति देता है कि निम्नलिखित गुण मेटाडाटा को बदला जाए:

writable : true      // गुण का मूल्य बदला जा सकता है
enumerable : true    // गुण गणनीय है
configurable : true  // गुण को फिर से कॉन्फ़िगर किया जा सकता है
writable : false     // गुण का मूल्य बदला नहीं जा सकता
enumerable : false   // गुण गणनीय नहीं है
configurable : false // अट्रिब्यूट फिर से कॉन्फ़िगरेबल नहीं किया जा सकता

ES5 गेटर और सेटर को बदलने की अनुमति देता है:

// डिफाइनिंग गेटर
get: function() { return language }
// डिफाइनिंग सेटर
set: function(value) { language = value }

इस उदाहरण में language को रीडनी कर दिया गया है:

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

इस उदाहरण में language गणनीय नहीं है:

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

सभी अट्रिब्यूट्स को सूचीबद्ध करना

इस उदाहरण में ऑब्जेक्ट के सभी अट्रिब्यूट्स को सूचीबद्ध किया गया है:

इंस्टांस

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.getOwnPropertyNames(person);  // एक सूची वापस करता है जो अट्रिब्यूट्स को दर्शाता है

अपने आप प्रयास करें

गणनीय अट्रिब्यूट्स को सूचीबद्ध करना

इस उदाहरण में केवल ऑब्जेक्ट के गणनीय अट्रिब्यूट्स को सूचीबद्ध किया जाता है:

इंस्टांस

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.keys(person);  // एक सूची वापस करता है जो गणनीय अट्रिब्यूट्स को दर्शाता है

अपने आप प्रयास करें

अट्रिब्यूट जोड़ना

इस उदाहरण में ऑब्जेक्ट में नए अट्रिब्यूट जोड़ा जाता है:

इंस्टांस

// ऑब्जेक्ट बनाना
const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// अट्रिब्यूट जोड़ना
Object.defineProperty(person, "year", {value:"2008"});

अपने आप प्रयास करें

गेटर और सेटर जोड़ना

Object.defineProperty() मथडल भी गेटर और सेटर जोड़ने के लिए उपयोग किया जा सकता है:

इंस्टांस

// ऑब्जेक्ट बनाना
const person = {firstName:"Bill", lastName:"Gates"};
// डिफाइनिंग गेटर
Object.defineProperty(person, "fullName", {
  get: function () {return this.firstName + " " + this.lastName;}
});

अपने आप प्रयास करें

एक गणना इंस्टांस

// डिफाइनिंग ऑब्जेक्ट
const obj = {counter:0};
// डिफाइनिंग सेटर
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;}
});
// काउंटर ऑपरेशन:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

अपने आप प्रयास करें