东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

乐动官方客户端

13610195940
联系方式
全国服务热线: 13610195940

咨询热线:15546891385
联系人:彭理明
地址:青海省西宁市城北区宁大路40号

JavaScript中的构造函数和工厂函数

来源:乐动官方客户端   发布时间:2019-12-21   点击量:140

JavaScript中的工厂函数

1 function crateHero (name,blood,weapoon) { 2 var o = new Object(); 3 o.name = name; 4 o.blood = blood; 5 o.weapoon = weapoon; 6 o.attch = function () { 7 console.log(this.name+"用"+this.weapoon+"进行了攻击"); 8 } 9 return o;10 }11 var hero = new crateHero("Tom","10","foot");12 hero.attch();

JavaScript中的构造函数:

1 function Hero(name,blood,weapon) { 2 this.name = name; 3 this.blood = blood; 4 this.weapon = weapon; 5 this.attack = function () { 6 console.log(this.name+"用"+this.weapon+"进行攻击"); 7 } 8 } 9 var HeroOne = new Hero("刘备",100,"雌雄双股剑");10 HeroOne.attack();

以上两个代码片段其实都是实现相同的功能,表面上看两个的区别只是第一个工厂函数要复杂一些,第二个要简单一些。其实最最重要的一点是工厂函数它没有办法解决对象的识别问题(即怎么知道一个对象的类型),而构造函数就很好的解决了这个问题每一个实例都指向了创建该实例的构造函数.,就像下面的列子:

1 console.log(HeroOne instanceof Hero);

打印值为true,而工厂函数只能是object

其实构造函数可以理解为简化的工厂函数,下面是构造函数的运行分析,不难可出其原理和工厂函数几乎一致:

    在内存中创建一个空对象(没有体现出来)设置构造函数的this,让this指向刚刚创建的对象执行构造函数的代码返回对象(没有体现出来)

Ps:个人理解若有错误欢迎指正。

 

相关产品

COPYRIGHTS©2017 乐动官方客户端 ALL RIGHTS RESERVED 备案号:140