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等变量在哪里保存?

感谢!

阅读 2.1k
1 个回答

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

console.dir(friend.sayNam)

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题