所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象。稳妥构造函数遵循与寄生构造函数类似的模式,但有两点不同:一时新创建对象的实例方法不引用this,二是不适用new操作符调用构造函数。
function Person(name,age,job){
//创建要返回的对象
var o = new Object();
//定义私有变量
o.name = name;
o.age = age;
o.job = job;
//添加方法
o.sayName = function(){
alert(this.name);
};
//返回对象
return o;
}
//测试
var friend = Person("Nick",29,"Teacher");
friend.sayName(); //"Nick"
注意:以这种模式创建的对象中,除了使用sayName()方法之外,没有其他办法访问name的值。即使有其他代码会给这个对象添加方法或数据成员,但也不可能有别的方法访问传入到构造函数中的原始数据。稳妥构造函数模式提供的这种安全性,使得它非常适合在某些安全执行环境提供的环境下使用。