javascript 工厂模式需要加new吗?

_zhaochao 发布于 2013/08/30 10:52
阅读 214
收藏 0
<script type="text/javascript">

 function Abc(name,age){
       var obj=new Object();
       obj.name=name;
       obj.age=age;
       obj.run=function(){
           return '名字是:'+this.name+'。年龄是:'+this.age;
           }
        return obj;
     }
var box1=Abc('zhao',24);
//var box1= new Abc('zhao',24);
alert(box1.run())

</script>


Abc()这个函数需要new出来吗?

加载中
0
火烧
火烧
不需要。
_zhaochao
_zhaochao
是不是可以理解Abc()是个函数,没执行一次里面就实例化一次 所以就不用再在外面实例化了?
0
Beyond-Bit
Beyond-Bit

你都说他是函数了,还new神马? 如果是面向对象那就要new、

这个看你心情、心情不好就不new了、

_zhaochao
_zhaochao
回复 @Beyond-Bit : 理解!
Beyond-Bit
Beyond-Bit
回复 @_zhaochao : 哈哈,这个看你们两个是如何理解了,面试官站在对象的角度,那你这个要new,而且你的标题是javascript工厂模式、对吧! 如果是普通函数那么不用new了、还有你的工厂模式写的有点不够规范、 javascript 是弱类型语言对对象函数的定义比较宽泛、
_zhaochao
_zhaochao
嗯,发现加new换个没加new都没有报错!但是一次面试,那个面试官说一定要加new,我就奇怪了!
0
Beyond-Bit
Beyond-Bit

给你一个比较标准的:

//factory 模式
var Abc=(function(){
var Abc =function(name,age){
this.name=name;
this.age=age;
};
return function(name,age){
return new Abc(name,age);
}

})();
var tom = new Abc("Tom",12);
var jack = new Abc("Jack",18);

_zhaochao
_zhaochao
嗯 谢了
返回顶部
顶部