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 分别指的是?
3 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
题主,你是不理解which this val
么?
如果是,我这里描述一下。
this
指向的是function
的调用对象 //大概这么理解
所以 里面那个this
,就表示User {}
;
(function(w){
//调用w
w;
})(a);//实际上w就相当于a了
对应你这个例子,效果就是使得 你后面 user.getname是一个function
而那个val,例子没点出来用法,就是user.setname("我是技术宅")
想想function函数表达式和定义表达式。
添加回答
举报
0/150
提交
取消