我正在尝试创建一个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