JavaScript稳妥构造函数模式的一个疑问?

例子来自《高程三》6.2.7:

function Person(name, age, job){
    //创建要返回的对象
    var o = new Object();
    //可以在这里定义私有变量和函数

    //添加方法
    o.sayName = function(){
        alert(name);
    };    
    //返回对象
    return o;
}

var friend = Person("Nicholas", 29, "Software Engineer");
friend.sayName();  //"Nicholas"

问题:想问下这个friend.sayName()涉不涉及闭包,涉及的话关联的作用域对象是?不涉及的话name等变量在哪里保存?

感谢!

阅读 527
评论
    1 个回答

    涉及闭包。可以先打出friend.sayName

    console.dir(friend.sayNam)

    image.png
    匿名函数的Scopes属性的第一个值就是friend.sayName在创建时形成的闭包。第二个值是window。

    评论 赞赏
      撰写回答

      登录后参与交流、获取后续更新提醒