这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象;
但是从表面上看,这个函数有很像典型的构造函数.
1 function createHuman(name,sex) { 2 var obj = new Object(); 3 obj.name = name; 4 obj.sex = sex; 5 obj.say = function () { 6 alert(this.name); 7 } 8 } 9 var man = createHuman("李白", "男"); 10 var woman = createHuman("武则天", "女");
除了使用new操作符并把使用的包装函数叫做构造函数之外,这个模式和工厂模式一模一样.
这个模式可以在特殊的情况下,用来为对象创建构造函数.
1 function printArray() { 2 var values = new Array(); 3 for (var i = 0; i < arguments.length; i++) { 4 values.push(arguments[i]); 5 } 6 values.print = function () { 7 return this.join("|"); 8 } 9 return values; 10 } 11 var roles = new printArray("爸爸", "妈妈", "弟弟"); 12 alert(roles.print());//爸爸|妈妈|弟弟
这种模式返回的对象与在构造函数外部创建的对象没有什么不同.
所以无法用instanceof操作符来确定对象类型.因为这个缘故,这种模式使用的很少.