Простой, вам нужно использовать
this.status = val;
В противном случае вы просто устанавливаете несвязанную глобальную переменную status
, равную val
.
И, как уже отмечалось, сеттеры / геттеры не реализованы в IE.
Кроме того, я не уверен, насколько разумно иметь сеттер, имя которого совпадает с именем свойства, которое он устанавливает. Не уверен, приведет ли это к конфликту, но это кажется плохой идеей, да? В идеале переменная, которая будет установлена, должна быть скрыта в закрытии
var props = {
id: null,
title: null
};
(function() {
var status;
props.__defineSetter__("status", function(val){
//Checking correctness of val...
status = val;
});
props.__defineGetter__('status', function() { return status; });
}());
Таким образом, status
полностью защищен от прямого доступа, который является точкой использования сеттеров и геттеров.