手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >有关于JS构造函数的重载和工厂方法
有关于JS构造函数的重载和工厂方法
摘要:写在前面有时候我们希望对象的初始化有多种方式。比如通过元素组成的数组来初始化一个Set对象,而不是通过传入构造函数的参数列表来初始化它重载o...

写在前面

有时候我们希望对象的初始化有多种方式。比如通过元素组成的数组来初始化一个Set对象,而不是通过传入构造函数的参数列表来初始化它

重载overload

通过重载这个构造函数方法让它根据传入参数的不同,来执行不同的初始化方法。

复制代码 代码如下:

function Set() {

this.values = {}; // 用这个对象的属性保存这个集合

this.n = 0; // 集合中值的个数

// 如果传入一个类数组的对象,将这个元素添加到集合中

// 否则,将所有的参数都添加到集合中

if(arguments.length === 1 && isArrayLike(arguments[0])) {

this.add.apply(this, arguments[0]); //把对象利用apply()添加到集合中

}else if(arguments.length > 0) {

this.add.apply(this, arguments); // 利用add()方法添加所有参数到集合中

}

}

这段代码所定义的Set()构造函数可以显式将一组元素作为参数列表传入,也可以传入元素组成的数组。但这个构造函数有多义性,如果集合的某个参数是一个数组就将无法通过这个构造函数来创建这个集合了(为了做到这一点,需要首先创建一个空集合,然后显示调用add()方法)。

工厂方法

一个类的方法用于返回类的一个实例。

复制代码 代码如下:

// 工厂方法通过数组初始化Set对象

Set.fromArray = function(arr) {

var s = new Set();

s.add.apply(s, arr);

return s;

};

不同名字的工厂方法用以执行不同的初始化。但由于构造函数是类的公有标识,因此每个类只能有一个构造函数。但这并不是一个必须遵守的规则。

辅助构造函数

通过以函数的形式调用Set()来初始化这个新对象

复制代码 代码如下:

// 定义Set类型的一个辅助构造函数

function SetFromArray(arr) {

// 通过以函数的形式调用Set()来初始化这个新对象

// 将arr的元素作为参数传入

Set.apply(this, arr);

}

// 设置原型, 以便SetFromArray能创建Set实例

SetFromArray.prototype = Set.prototype;

JavaScript 没有做不到,只有想不到

【有关于JS构造函数的重载和工厂方法】相关文章:

javascript嵌套函数和在函数内调用外部函数的区别分析

javascript组合使用构造函数模式和原型模式实例

JS创建对象几种不同方法详解

快速掌握Node.js环境的安装与运行方法

JavaScript中用于生成随机数的Math.random()方法

JavaScript实现表格点击排序的方法

js兼容火狐获取图片宽和高的方法

javascript动态创建链接的方法

js+HTML5基于过滤器从摄像头中捕获视频的方法

关于JavaScript作用域你想知道的一切

精品推荐
分类导航