最优化javascript自定义对象
来源:互联网 发布:switch case用法 java 编辑:程序博客网 时间:2024/05/01 10:26
1.工厂方式
function createCar(sColor, iDoors, iMpg){
var oTempCar= new Object();
oTempCar.color = sColor;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = function(){
alert(this.color);
};
return oTempCar;
}
这种方式是先建一个对象,再给它加属性和方法。
缺点:每次 var oCar1 = create("red",4,23);的时候都要从新创建新的showColor 函数,这样就以为这每个对象都有自己的函数。
解决的方法:
function showColor(){
alert(this.color);
}
function createCar(sColor, iDoors, iMpg){
var oTempCar= new Object();
oTempCar.color = sColor;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = showColor;
return oTempCar;
}
ps:这样写看起来好丑,不象一个对象了。
2.构造函数方法
function Car(sColor, iDoors, iMpg){
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.showColor = function(){
alert(this.color);
};
}
ps:默认是返回this,所以没必要写return this;
缺点:创建对象的时候也要不停的创建新的函数showColor
3.原型方式
function Car(){
}
Car.prototype.color = "red";
Car.prototype.dorrs = 4;
Car.prototype.mpg =23;
Car.prototype.showColor = function(){
alert(this.color);
};
Car.prototype.drivers = new Array("Mile","Sue");
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.drivers.push("Matt");
alert(oCar1.drivers); //输出"Mike,Sue,Matt"
alert(oCar2.drivers); //输出"Mike,Sue,Matt"
缺点:构造函数没参数;当属心为对象时候,所有被实力化的Car的对象属性都一样!
4.混合的构造函数/原型方式
用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)
function Car(sColor,iDoors,iMpg){
this.Color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","Sue");
}
Car.prototype.showColor = function(){
alert(this.color);
};
这样问题就都解决了,不过OOPer决定它不完美
5.动态原型方法
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","Sue");
if(typeof Car._initialized == "undefined"){
Car.prototype.showColor = function(){
alert(this.color);
};
Car._initialized = true;
}
}
这样所有问题都解决并且向个正真的对象了
6。混合工厂方式
function Car(){
var oTempCar = new Object;
oTempCar.color = "red";
oTempCar.doors = 4;
oTempCar.mpg = 23;
oTemp.showColor = function(){
alert(this.color)
};
return oTempCar;
}
这种方式通常是在不能应用前一种方式时的变通方式。创建假构造函数,返回另一种对象的新实例。
总结:目前用的最多的是混合的构造函数/原型方式,此外动态原型也很流行,不咬单独使用经典的构造函数或原型方式,这样的代码会有问题。
function createCar(sColor, iDoors, iMpg){
var oTempCar= new Object();
oTempCar.color = sColor;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = function(){
alert(this.color);
};
return oTempCar;
}
这种方式是先建一个对象,再给它加属性和方法。
缺点:每次 var oCar1 = create("red",4,23);的时候都要从新创建新的showColor 函数,这样就以为这每个对象都有自己的函数。
解决的方法:
function showColor(){
alert(this.color);
}
function createCar(sColor, iDoors, iMpg){
var oTempCar= new Object();
oTempCar.color = sColor;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = showColor;
return oTempCar;
}
ps:这样写看起来好丑,不象一个对象了。
2.构造函数方法
function Car(sColor, iDoors, iMpg){
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.showColor = function(){
alert(this.color);
};
}
ps:默认是返回this,所以没必要写return this;
缺点:创建对象的时候也要不停的创建新的函数showColor
3.原型方式
function Car(){
}
Car.prototype.color = "red";
Car.prototype.dorrs = 4;
Car.prototype.mpg =23;
Car.prototype.showColor = function(){
alert(this.color);
};
Car.prototype.drivers = new Array("Mile","Sue");
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.drivers.push("Matt");
alert(oCar1.drivers); //输出"Mike,Sue,Matt"
alert(oCar2.drivers); //输出"Mike,Sue,Matt"
缺点:构造函数没参数;当属心为对象时候,所有被实力化的Car的对象属性都一样!
4.混合的构造函数/原型方式
用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)
function Car(sColor,iDoors,iMpg){
this.Color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","Sue");
}
Car.prototype.showColor = function(){
alert(this.color);
};
这样问题就都解决了,不过OOPer决定它不完美
5.动态原型方法
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","Sue");
if(typeof Car._initialized == "undefined"){
Car.prototype.showColor = function(){
alert(this.color);
};
Car._initialized = true;
}
}
这样所有问题都解决并且向个正真的对象了
6。混合工厂方式
function Car(){
var oTempCar = new Object;
oTempCar.color = "red";
oTempCar.doors = 4;
oTempCar.mpg = 23;
oTemp.showColor = function(){
alert(this.color)
};
return oTempCar;
}
这种方式通常是在不能应用前一种方式时的变通方式。创建假构造函数,返回另一种对象的新实例。
总结:目前用的最多的是混合的构造函数/原型方式,此外动态原型也很流行,不咬单独使用经典的构造函数或原型方式,这样的代码会有问题。
0 0
- 最优化javascript自定义对象
- 最优化javascript自定义对象
- 最优化javascript自定义对象
- 最优化javascript自定义对象(转自:http://www.cnblogs.com/QiuYun/archive/2007/03/22/684523.html)
- Javascript 自定义对象[转载]
- javascript中的自定义对象
- JAVASCRIPT自定义对象
- JavaScript高级---自定义对象
- javascript 创建自定义对象
- javascript 自定义对象
- javascript的自定义对象
- javascript自定义对象
- javascript自定义对象
- javascript自定义对象
- Javascript创建自定义对象
- JavaScript 自定义对象
- javascript自定义对象
- javascript 自定义Array对象
- JavaScript高级培训-自定义对象
- C++类中成员变量的初始化总结
- Javascript创建对象
- python 访问hbase
- JavaScript 创建自己的自定义对象
- 最优化javascript自定义对象
- javascript中的创建自定义对象的六种方式详解
- javascript创建自定义对象和prototype
- curl : 操作每一个文件时, 要成对执行 curl_easy_init 和 curl_easy_cleanup
- Sqoop导表在大并发下造成RegionServer的系统cpu过高
- iOS 设置titleview的宽度为屏幕宽
- 再谈JavaScript的用户自定义对象
- javascript基础知识梳理-原始类型
- 桌面邮件飞机源码——VB.NET网络编程简单实例