Еще есть сеттеры и геттеры, но механизм их создания доступен JS-программисту не во всех браузерах:
var obj = {
x: 1
};
obj.__defineSetter__("propertyX", function (a) {
this.x = a;
});
obj.__defineGetter__("propertyX", function () {
return this.x + 1;
});
obj.propertyX = 2;
alert(obj.x);
alert(obj.propertyX);
Так же, возможно, реализованы и window.location, и document.body.innerHTML.
Хотя, сами эти сеттеры и геттеры, наверное, тоже свойства, но с определенной пометкой и обработчиками, тут я не знаю, как оно внутри работает, могу только догадываться.