Edit in JSFiddle

var person = {
  name: "Grag"
};
document.write(person.name + "<br>"); // Grag

Object.defineProperty(person, "name", {
  writable: false, // 값변경을 못하게 함 
  value: "John" // John으로 값을 변경
});

document.write(person.name + "<br>"); // John
person.name = "Nicholas"; // 값을 변경할 수 없음
document.write(person.name + "<br>"); // John

Object.defineProperty(person, "name", {
  configurable: false, // 변경할 수 없게 함 
  value: "Michael" // defineProperty()메서드는 값을 변경할 수 있음
});

document.write(person.name + "<br>"); // Michael
delete person.name; // 삭제할 수 없음
document.write(person.name + "<br>"); // Michael

try {
  Object.defineProperty(person, "name", {
    configurable: true, // 변경할수 없기 때문에 예외 발생
    value: "Nocholas"
  });
} catch (err) {
  document.write(err);
}