标签:c style class blog code java
构造函数个工厂模式创建的对象有什么不同
参考http://www.zhihu.com/question/21220141 方璐的回答
对一个函数之前使用new是将是将该函数当做构造函数来调用,会创建一个该类的实例对象,这个对象的类型是这个函数名,中间使用this.propertyname=value会对该实例对象的属性赋值,并且无论有没有return,都会返回这个对象。
想要创建类,一般用构造函数的方式
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.introduce=function(){ alert("My name is "+this.name+", I am"+age+"year(s) old, I am a "+job+"."); } }
还有一种常见的是工厂模式
function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; return o; }
工厂模式有什么不好呢?工厂模式创建的对象不能通过instanceof来判断类型
var p1=createPerson(‘name‘,11,‘pair‘); p1 instanceof createPerson //返回false var ps=new Person(‘name‘,22,‘sss‘); ps instanceof Person //返回true
标签:c style class blog code java
原文地址:http://www.cnblogs.com/cart55free99/p/3765961.html