标签:
作为一门基于对象的语言,JavaScript又不像一门真正的面向对象编程的语言,因为它居然没有类(class)~
function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.getName = function () { return this.name; } return o;//使用return返回生成的对象实例 } var person = createPerson(‘Jack‘, 19, ‘SoftWare Engineer‘);
工厂模式是一种广为人知的设计模式,创建对象交给了一个可以接受参数的方法。
优点:解决了多次创建对象的繁琐过程。
缺点:无法识别对象类型,因为创建对象都是使用Object的原生构造函数来完成的。
function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.getName = function () { return this.name; } } var person1 = new Person(‘Jack‘, 19, ‘SoftWare Engineer‘); var person2 = new Person(‘Liye‘, 23, ‘Mechanical Engineer‘);
使用自定义的构造函数(与普通函数一样,只是用它来创建对象),定义对象类型(如:Person)的属性和方法。它与工厂方法区别在于:
此外,要创建Person的实例,必须使用new关键字,以Person函数为构造函数,传递参数完成对象创建;实际创建经过以下4个过程:
上述由Person构造函数生成的两个对象person1与person2都是Person的实例,因此可以使用instanceof判断,并且因为所有对象都继承Object,因此person1 instanceof Object也返回真:
alert(person1 instanceof Person);//true; alert(person2 instanceof Person);//true; alert(person1 instanceof Object);//true; alert(person1.constructor === person2.constructor);//ture;
标签:
原文地址:http://www.cnblogs.com/diver-blogs/p/5768851.html