当前位置: 移动技术网 > IT编程>开发语言>JavaScript > javascript工厂模式和构造函数模式创建对象方法解析

javascript工厂模式和构造函数模式创建对象方法解析

2019年04月01日  | 移动技术网IT编程  | 我要评论

工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在javascript 中的实现)。考虑到在ecmascript 中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节,如下面的例子所示。

function createperson(name, age, job){
 var o = new object();
 o.name = name;
 o.age = age;
 o.job = job;
 o.sayname = function(){
 alert(this.name);
 };
 return o;
}
var person1 = createperson("nicholas", 29, "software engineer");
var person2 = createperson("greg", 27, "doctor");

函数createperson()能够根据接受的参数来构建一个包含所有必要信息的person 对象。可以无数次地调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)。随着javascript的发展,又一个新模式出现了。

二、构造函数模式

像object 和array 这样的原生构造函数,在运行时会自动出现在执行环境中。此外,也可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。例如,可以使用构造函数模式将前面的例子重写如下。

function person(name, age, job){
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayname = function(){
 alert(this.name);
 };
}
var person1 = new person("nicholas", 29, "software engineer");
var person2 = new person("greg", 27, "doctor");

在这个例子中,person()函数取代了createperson()函数。我们注意到,person()中的代码除了与createperson()中相同的部分外,还存在以下不同之处:

  • 没有显式地创建对象;
  • 直接将属性和方法赋给了this 对象;
  • 没有return 语句。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持移动技术网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网