It's also possible to retrieve the property descriptor for a given property by using the ES5 Object.getOwnPropertyDescriptor() method.This method accepts two arguments:the object on which the property resides and the name of the property whose descriptor should be retrieved.The return value is an object with properties for configurable,enumerable , get and set for accessor properties or configurable,enumerable ,writable ,and value for data properties .Example:
var book={};
Object.defineProperties(book,{
_year:{ value:2004 },
edition:{ value:1},
year:{
get:function(){
return this._year;
},
set:function(newV){
if(newV>2004){
this._year=newV;
this.edition+=newV-2004;
}
}
}
});
var desc=Object.getOwnPropertyDescriptor(book,"_year");
alert(desc.value);//2004
alert(desc.configurable);//false
alert(typeof desc.get);//"undefined"
var desc=Object.getOwnPropertyDescriptor(book,"year");
alert(desc.value);//undefined
alert(desc.enumerable);//false
alert(typeof desc.get);//'function'
For the data property _year,value is equal to the original value,configurable is false,and get is undefined,For the accessor property year,value is undefined,enumerable is false,and get is a pointer to the specified getter function.