首页 > 语言 > JavaScript > 正文

JavaScript 学习笔记(六)

2024-05-06 14:12:03
字体:
来源:转载
供稿:网友
一、 工厂方式
自己的理解:要创建很多个对象的实例,这些实例有相同的属性,但是有不同的属性值。这个时候就需要创个工厂函数(factory function)。
工厂函数(factory function):创建并返回特定类型的对象。
工厂函数中如果一个属性是方法的话,可以在工厂函数的外面定义对象的方法,然后通过属性指向该方法,从而可以避开每次都调用自己的属性方法,这样做使得每个对象都共享了同一个函数。
示例:
代码如下:
<script type="text/javascript">
//工厂函数外面定义对象的方法
function ShowNameFn() {
alert(this.Name);
}
//工厂方式创建对象
function CreatBOFn(sName, iAge, bSex) {
var BO = new Object();
BO.Name = sName;
BO.Age = iAge;
BO.Sex = bSex;
BO.ShowName = ShowNameFn; //该属性实际上是指向函数的指针,是一个方法
return BO;
}
//按钮测试调用
function FactoryCreateFn() {
var oPerson1 = CreatBOFn("张三", 18, true); //创建实例实际上是直接调用方法
oPerson1.ShowName();
}
</script>

总结:工厂函数这种方式定义类或对象,他在创建实例的时候就调用这个工厂函数。
二、 构造函数方式
第一步选择类名,即构造函数的名字,BO名首字母大写,看下面代码发现跟上面的工厂函数类似。
示例:
代码如下:
//------第二种:构造函数方式--------------------------------
function Car(color, money) {
this.Color = color;
this.Money = money;
this.ShowMoney = function() {
alert(this.Money);
}
}
//按钮调用测试
function NewCarFn() {
var Car1 = new Car("红色", "23万RMB");
Car1.ShowMoney();
}
//----------------------------------------------------------

比较上一种工厂函数方式的区别:
① 构造函数内部没有创建对象,而是使用this关键字。
② 使用new运算符调用构造函数。
三、 原型方式
利用对象的prototype属性,可以把他看成创建新对象所依赖的原型,用空构造函数来设置类名,然后所有的属性和方法都被直接赋予prototype属性。
原型方式的问题:
首先,这个构造函数没有参数,使用原型方式时,不能通过给构造函数传递参数初始化属性的值。必须在对象创建后才能改变属性的默认值。
其次,当属性指向的是对象,而不是函数时,对象却被多个实例共享的,其中一个改变将引起其他对象的改变。
示例:
代码如下:
//先定义一个空的构造函数
function Car() {
}
//属性和方法直接赋予prototype属性
Car.prototype.Color = "红色,";
Car.prototype.Money = "20万";
Car.prototype.Drivers = new Array("小三", "小四");
var Car1 = new Car();
Car1.Drivers.push("小五"); //实例1中给对象Drivers新增了值(实际上就是在原型里面加了多了个“小五”,所以当new第二个对象的时候读属性Drivers也出现了小五)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选