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访问。这个时候就破坏了封装性。
//而且如果有大量的属性。就会导致整个代码中有很多全局函数。不利于开发。
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访问。这个时候就破坏了封装性。
//而且如果有大量的属性。就会导致整个代码中有很多全局函数。不利于开发。
相关文章推荐
- js中创建对象时,工厂方式与构造函数方式中this的区别
- JS中定义对象方式二: 使用工厂方式创建对象(传递参数,及其改进方法)
- JS中定义对象方式三: 使用构造函数方式创建对象
- JS中定义对象方式二: 使用工厂方式创建对象(无参数传递)
- js中创建对象是,工厂方式与构造函数方式中this的区别
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- js中使用new Date(str)创建时间对象不兼容firefox和ie的解决方式
- JS中用new 创建对象及在构造函数中return的使用
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- JS中工厂方法和构造函数创建的对象的关系
- JS中定义对象方式五: 使用动态原型方式创建对象
- JS中使用动态原型模式、寄生构造函数模式、稳妥构造函数模式创建对象
- js使用函数创建对象的方式
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- JS中定义对象方式四: 使用原型(prototype)方式创建对象之一
- 在立即执行函数内组合使用构造函数模式和原型模式创建对象,实现模块化开发(以daterangepicker.js为例)
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象