js中的getter和setter

luoyjx · 2014-07-18 16:35 · 1915次阅读

//****************动态生成方法**********************
//props 对象,如:{"name":"chengkai","age":22}
//************************************************
function User(props){
    for(var prop in props){
        (function(currentObj){ //这里的currentObj由this传过来的。this 为 User
            //创建此属性的一个新的getter(读取器)
            (function(prop){
            currentObj["get"+prop] = function(){
                //alert(props.name+" "+props.age+" "+prop);
                return props[prop];
            }
            //创建此属性的一个新的setter(设置器)
            currentObj["set"+prop] = function(val){
                props[prop] = val;
            };
            })(prop);//查了一下这里是自调用函数的写法
        })(this); //这里的this 为 User
    }
}
var user = new User({"name":"chengkai","age":22});
//注意,name属性并不存在,因为它是属性对象(props Obj)的私有变量
alert(user.name == null); //输出 true
alert(user.getname()); //输出 chengkai
user.setage(11);
user.setname("kai");
alert(user.getage()); //输出 11
alert(user.getname()); //输出 kai
收藏

暂无评论

登录后可以进行评论。没有账号?马上注册