每個對象實例的proto 等于這個對象的構(gòu)造函數(shù)的原型。
即:
obj.__proto__ = obj.constructor.prototype
可以通過重寫Object的getter和setter方法來實現(xiàn)在設(shè)值和取值時候的更改甚至是回調(diào)鉤子。如雙向綁定的實現(xiàn)方法之一就是如此,可以在給屬性直接賦值的時候,進行必要的dom操作,實現(xiàn)雙向綁定。但是兼容性不好。
ooo.__defineSetter__('name', function(){alert('操作dom試試')});
不過這個方法已經(jīng)建議廢棄轉(zhuǎn)而使用更標準的初始化對象時的方法或者[
Object.defineProperty()
即:
var obj = {
val:100,
get getval(){ return this.val; },
set setval(x){ this.val = x; }
}
或者(可以通過以下屬性做權(quán)限設(shè)置)
Object.defineProperty(o, 'b', {
get: function() { return bValue; },
set: function(newValue) {
bValue = newValue;
},
enumerable: true,
configurable: true
});