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

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 分别指的是?


红糖糍粑
浏览 393回答 3
3回答

收到一只叮咚

题主,你是不理解which this val么?如果是,我这里描述一下。this指向的是function的调用对象 //大概这么理解所以 里面那个this,就表示User {};(function(w){  //调用w  w;})(a);//实际上w就相当于a了对应你这个例子,效果就是使得 你后面 user.getname是一个function而那个val,例子没点出来用法,就是user.setname("我是技术宅")想想function函数表达式和定义表达式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript