js面向对象
2017-03-04 18:33 老安的世界 阅读(122) 评论(0) 编辑 收藏 举报创建多个类似对象的方法
工厂模式
//工厂模式
//函数一:
function box(name,age){ var obj=new Object(); obj.name=name; obj.age=age; obj.run=function(){ return this.name+this.age; }; return obj; }
//函数二: function box2(name,age){ var obj=new Object(); obj.name=name; obj.age=age; obj.run=function(){ return this.name+this.age; }; return obj; } var a=box('tianwei',100); var b=box2("aaa",1000); document.write(a.run()); //下面产生的结果一致,无法区分是哪个对象创建的实例 typeof a; typeof b; a instanceof Object; b instanceof Object;
为了解决这个问题,产生了另一种对象创建模式
构造函数模式
function Box(name,age){ //构造函数后台自动创建 obj=new Object(); //构造函数无须返回,后台自动返回 this.name=name; this.age=age; this.run=function(){ return this.name+this.age; } } function Person(name,age){ //构造函数后台自动创建 obj=new Object(); //构造函数无须返回,后台自动返回 this.name=name; this.age=age; this.run=function(){ return this.name+this.age; } } var a=new Box('tianwei',1000); var b=new Person('tianwei',1000); document.write(a.run()); document.write(a instanceof Box); document.write(b instanceof Person);
//对象冒充调用 var c=new Object(); Box.call(c,'aaa',2000); document.write(c.run());