读书人

请教稳妥构造函数模式原理

发布时间: 2012-08-27 21:21:56 作者: rapoo

请问稳妥构造函数模式原理

JScript code
function Person(name, age, job){    var o = new Object();    o.sayName = function(){        alert(name);    };    return o;}var person  = Person ("han", 29, "Softerware Engineering");person.sayName();person.sayAge = function (){    alert(age);};person.sayAge(); 

为什么前一个sayName()可以访问name,而sayAge不能访问age。这个时候age,job变量还存在吗,如果不存在,为什么name变量还是存在的?

[解决办法]
这个并不难理解,最近我的博客也将发布相关内容

这是关于闭包的内容。
你的函数的作用域是在定义时而非运行时。所以你的sayName方法是可以调用name变量的
然而你在sayAge等方法中是不能访问相应变量的,是因为你在定义的时候上下文没有相应的变量

另外
var o = new Object();
o.sayName = function(){
alert(name);
};
return o;

可以考虑这样写
return {
sayName : function(){
alert(name);
}
};

读书人网 >JavaScript

热点推荐