జావాస్క్రిప్ట్ 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 గెట్టర్ మరియు సెట్టర్లను మార్చవచ్చు:

// నిర్వచించు getter
get: function() { return language }
// నిర్వచించు setter
set: function(value) { language = value }

ఈ ఉదాహరణ లాంగ్వేజ్ అట్రిబ్యూట్ను కేవలం రిడ్స్ లో మాత్రమే సెట్ చేయవచ్చు:

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

ఈ ఉదాహరణ లాంగ్వేజ్ అట్రిబ్యూట్ను అనిలేకరించింది:

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"};
// నిర్వచించు getter
Object.defineProperty(person, "fullName", {
  get: function () {return this.firstName + " " + this.lastName;}
});

亲自试一试

ఒక కౌంటర్ ఇన్స్టాన్స్

// నిర్వచించు ఆబ్జెక్ట్
const obj = {counter:0};
// నిర్వచించు setter
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;

亲自试一试