为了账号安全,请及时绑定邮箱和手机立即绑定

JAVASCRIPT OOP 闭包 this指代 动态get,set

JAVASCRIPT OOP 闭包 this指代 动态get,set

红糖糍粑 2019-03-19 18:19:44
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的调用对象 //大概这么理解
https://img1.sycdn.imooc.com//5cb298710001a1b606890143.jpg

所以 里面那个this,就表示User {};

(function(w){

  //调用w

  w;

})(a);//实际上w就相当于a了

对应你这个例子,效果就是使得 你后面 user.getname是一个function


而那个val,例子没点出来用法,就是user.setname("我是技术宅")

想想function函数表达式和定义表达式。


查看完整回答
反对 回复 2019-04-14
  • 3 回答
  • 0 关注
  • 391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信