JavaScript中常见的设计模式(2)构造函数模式

本文介绍了ECMAScript中构造函数的应用及其局限性,探讨了如何使用构造函数创建特定类型的对象,并指出了创建实例时重复创建函数的问题。最后,提出了原型模式作为解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数模式

在ECMAScript中构造函数可以用来创建特定类型的对象。例如:Array Object String等的原生构造函数。

根据这一特性我们可以重写构造函数来满足我们的需求,代码如下:

function Demo(name,address,time){

this.name=name;

this.address=address;

this.time=time;

//最好将函数分离出来

this.displayInfo=funtion (){

alert(this.name+","+this.address+","+this.time);

}

}

var demo1=new Demo("demo","china","2017-04-25")

1)创建一个新对象

2)构造函数的作用域赋值给新对象

3)执行构造函数中的代码(将构造函数中的属性赋值给新对象)

4)返回新对象

优点:将构造函数的实例标识为一种特定的类型。

缺点:创建实例会重复的创建函数,这种创建函数的方式会导致不同的作用域链和标识符解析.

解决方法:

将构造函数中的内部函数提取出来成为全局函数。

新问题:1)全局函数只是被构造函数调用,有点资源浪费。2)如果多个函数,要在外部创建多个全局函数。这样的话就毫无封装性了。

解决以上问题,从而诞生了原型模式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值