js中闭包的特权方法是怎么实现的?

完成工厂函数达到以下要求
·保存传入参数name到一个私有变量中
·函数返回一个对象,且对象带有一个特权方法getName,用于返回对象的私有变量name的值
如下所示:

var person = createPerson('Jero');
console.log('person.name);  //underfind
console.log('person.getName());  //Jero

刚开始学习闭包这个概念,不太理解特权方法这个概念,所以这个要怎么实现才能如上两个console.log的输出呢?
谢谢!

阅读 2.5k
3 个回答
function createPerson(name){
  return {
    getName:function(){
      return name
    }
  }
}

楼上正解。

建议题主不要追求这个问题的答案,那就舍本逐末了。好好把闭包的概念读几遍,理解了,做几个练习,再来解决这个问题,就会觉得很容易。

function createPerson (name){

    //保存传入参数 name 到一个私有变量中
    var privateName = name;
    return {
        //返回对象的私有变量 name 
        getName : function getName(){
        return privateName;
        }
    }
}
var person = createPerson('Jero');
console.log(person.name); //undefined 
console.log(person.getName());//Jero
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题