每个对象实例的proto 等于这个对象的构造函数的原型。
即:
obj.__proto__ = obj.constructor.prototype
可以通过重写Object的getter和setter方法来实现在设值和取值时候的更改甚至是回调钩子。如双向绑定的实现方法之一就是如此,可以在给属性直接赋值的时候,进行必要的dom操作,实现双向绑定。但是兼容性不好。
ooo.__defineSetter__('name', function(){alert('操作dom试试')});
不过这个方法已经建议废弃转而使用更标准的初始化对象时的方法或者[
Object.defineProperty()
即:
var obj = {
val:100,
get getval(){ return this.val; },
set setval(x){ this.val = x; }
}
或者(可以通过以下属性做权限设置)
Object.defineProperty(o, 'b', {
get: function() { return bValue; },
set: function(newValue) {
bValue = newValue;
},
enumerable: true,
configurable: true
});