Edit in JSFiddle

var obj = { _x: 5, };

Object.defineProperty(obj, "x", {
  enumerable: false,   // nie będzie widać w for-in, in
  configurable: false, // nie będzie można zmienić deskryptora
  get: function () {  return this._x;  },
  set: function (newValue) {
    if (newValue < 10) {
        this._x = newValue;
    } else {
        this._x = -1;
    }
  }
});

document.write("<pre>");
obj.x = 1;
document.writeln(obj.x); // 1

obj.x = 42;
document.writeln(obj.x); // -1

document.write("for-in: ")
for (var i in obj) {
  document.write(i); // tylko _x, nie będzie x
}
document.writeln();

try {
  Object.defineProperty(obj, "x", {
    value: 8,
    enumerable: true
  }); // nie wykona się
} catch (e) {
  document.write("Nie udało się przedefiniować obj.x: ");
  document.writeln(e);
}

document.write("</pre>");