您的位置:首页 > Web前端 > JavaScript

js使用工厂和构造函数方式创建对象

2013-07-01 15:52 507 查看
//工厂方式创建

function createPerson(name,age){

var o = new Object();

o.name=name;

o.age=age;

o.say = function(){

alert(this.name+"\t"+this.age);

}

}

//使用工厂的方式,虽然解决了类的问题。但是依然存在问题

//我们无法获取到 p1或者p2的类型。通过typeof仅仅得到的是OBject

//但是要通过instanceof()不知道是哪个类型

//所以我们就要使用构造函数方式创建

var p1 = new createPerson("Amos",12);

var p1 = new createPerson("Ada",12);

//构造函数创建

//这样创建和工厂创建差不多。但是这样可以去匹配类型

//alert( p instanceof Person );

function Person (name,age){

this.name=name;

this.age=age;

this.say=function(){

alert(this.name+"\t"+this.age);

}

}

Person p1 = new Person("Amos",12);

Person p2 = new Person("Ada",12);

alert(p1.say==p2.say) // false; 每一个对象中都会存在一个对方法的拷贝,如果对象的行为很多,那么就会占用很多空间

//解决办法:可以把函数放到全局变量来定义。

function Person (name,age){

this.name=name;

this.age=age;

this.say=say;

}

function say(){

alert(this.name+"\t"+this.age);

}

//但是提出来就出现一个问题,这个函数就可以被window访问。这个时候就破坏了封装性。

//而且如果有大量的属性。就会导致整个代码中有很多全局函数。不利于开发。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐