我正在嘗試創建一個UserDon對象,並嘗試以編程方式生成get和set方法(基於John Resig的專業Javascript書第37頁),並且正在Firefox 3.5上測試此方法在javascript中動態創建get/set方法
問題是:在函數UserDon中,「this」是指窗口對象而不是UserDon對象。
所以在調用var userdon = new UserDon(...)後,我在窗口對象(也是setage和getage)上創建了setname和getname方法。
我該如何解決這個問題?
function UserDon(properties) {
for(var i in properties) {
(function(){
this[ "get" + i ] = function() {
return properties[i];
};
this[ "set" + i ] = function(val) {
properties[i] = val;
};
})();
}
}
var userdon = new UserDon({
name: "Bob",
age: 44
});
好問題。否則,如果你沒有在getter/setter中做任何額外的操作,你最好只使用公共屬性並放棄方法開銷。 :) – deceze 2010-04-11 04:52:31