1 function createPerson(name, age) { 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.sleep = function() { 6 alert("sleeping..."); 7 } 8 return o; 9 } 10 var p1 = createPerson("cai10", 22); 11 var p2 = createPerson("cai20", 25); 12 alert(p1.name); 13 alert(p1.age); 14 p1.sleep(); 15 alert(typeof p1); 16 alert(p1 instanceof Object); 17 alert(p1.constructor); 18 alert(p1.sleep == p2.sleep); 19 // cai10 20 // 22 21 // sleeping... 22 // object 23 // true 24 // function Object() { 25 // [native code] 26 // } 27 // false
工厂模式, 即以函数来封装以特定接口创建对象的细节.
函数createPerson()可以通过接受参数来创建含有必要信息的Person对象,
可以多次调用此函数, 每次返回一个包含两个属性和一个方法的对象,
但无法知道一个对象的类型, 即通过typeof,constructor等无法确定对象类型.
此外, p1和p2都有一个sleep()方法, 但它们不是同一个Function实例, 创建两个同样的Function实例是没有必要的,
后面的创建对象模式会解决此些问题.
如有错误, 请指正, 谢谢...
时间: 2024-10-08 04:12:31