代码改变世界

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());