JavaScript - ECMAScript 5 - Properties

http://ejohn.org/blog/ecmascript-5-objects-and-properties/

by secretgspot

JavaScript

// Object.getOwnPropertyDescriptor
var obj = { foo: "test" };
console.log(JSON.stringify( 
  Object.getOwnPropertyDescriptor( obj, "foo" )
))
    
    
// Object.defineProperty
var obj = {};
Object.defineProperty( obj, "value", {
  value: true,
  writable: false,
  enumerable: true,
  configurable: true
});

(function(){
  var name = "John";
  
  Object.defineProperty( obj, "name", {
    get: function(){ return name; },
    set: function(value){ name = value; }
  });
})();

console.log( obj.value )
// true

console.log( obj.name );
// John

obj.name = "Ted";
console.log( obj.name );
// Ted

for ( var prop in obj ) {
  console.log( prop );
}
// value
// name

obj.value = false; // Exception if in strict mode

Object.defineProperty( obj, "value", {
  writable: true,
  configurable: false
});

obj.value = false;
console.log( obj.value );
// false

delete obj.value; // Exception