function User( properties ){
for( var i in properties ){
(function( which ){
var p = i;
which[ "get" + i ] = function(){
return properties[p];
};
which[ "set" + i ] = function(val){
properties[p] = val;
}
})(this);
}
}
var user = new User({
name : "Bob",
age : 44
});
console.log(user.name);
console.log(user.getname());
console.log(user.getage());
这是JS面向对象编程书上的一个例子,我想问问这个实际有用处吗? 虽然我对闭包什么的略知一点可是这里的 which this val
搞的我好晕 求牛人解释一下。。。
再问一个
Function.prototype.method = function(name, func){
this.prototype[name] = func;
return this;
};
所以name必须是个string? this.prototype[name]中的this 和 return this 分别指的是?
题主,你是不理解
which this val
么?如果是,我这里描述一下。
this
指向的是function
的调用对象 //大概这么理解所以 里面那个
this
,就表示User {}
;对应你这个例子,效果就是使得 你后面
user.getname
是一个function
而那个
val
,例子没点出来用法,就是user.setname("我是技术宅")
想想
function
函数表达式和定义表达式。