js几种面向对象的创建方式(工厂模式、构造函数模式、原型模式)

js几种面向对象的创建方式(工厂模式、构造函数模式、原型模式)
在文章的最后,我们介绍了Javascript的面向对象的基础上,本文继续学习Javascript的面向对象,js的语法是非常灵活的,有几种不同的方式创建简单的对象。这些太灵活的地方,有时是混乱的,所以今天我们就整理了一些常用的JS对象的创建的方式。

前言

虽然使用对象构造函数或使用对象文字可以非常方便地创建对象,但这种方式有一个明显的缺点:使用一个接口创建多个对象会产生大量冗余代码,因此,为了解决这个问题,人们开始使用以下方法来实现普通对象。

工厂模式

该模式抽象出创建对象的特定过程,使用函数创建具有特定接口的对象的详细信息。
功能(姓名、性别、年龄CPerson){
新对象();
o.name =名称;
o.sex =性;
o.age =年龄;
o.show =函数(){
console.log(this.name,this.age,这个性别);
}
回来啊;
}
VaR P1 = CPerson('modesty ','男',100);
p1.show();
VaR P2 = CPerson('chic场','女',14');
p2.show();
工厂模式测试

工厂模式的问题:工厂模式的使用可以创建一个包含所有信息的对象,这个信息可以被调用无数次,虽然它解决了创建多个相似对象的问题,但它并不能解决对象识别问题(即如何学习对象的类型)。

构造函数模式
函数的CPerson(姓名、性别、年龄){ / /注此构造函数大写
this.name =名称;
this.sex =性;
this.age =年龄;
这。=函数(){
console.log(this.name,this.age,这个性别);
}
}
VaR P1 =新CPerson('modesty ','男',100);
p1.show();
VaR P2 =新CPerson('chic场','女',14');
p2.show();
构造函数模式测试

请注意,构造函数与工厂模式有点不同,如下所示

构造函数的首字母大写

没有明确的对象创建。

属性和方法分配给该对象

没有返回语句

用这种方法调用构造函数将经历几个步骤

创建一个新对象

将构造函数的范围分配给对象(因此指向对象)

执行构造函数中的代码(也就是将属性和方法添加到新对象的过程)

返回对象

注意:构造函数与普通函数没有什么不同,唯一的区别是调用方式的不同。
调用1
VaR P1 =新CPerson('modesty ','男',100);
(P1。节目); / /谦龙男100
2调用普通函数调用
CPerson('modesta ','男',100);
window.show(100) / /谦龙男性注意方法和属性将被设置为窗口对象
在调用中的另一个对象的范围内调用3
var obj =新的对象();
cperson.call(obj,'蝇','男',100);
(obj。节目); / /谦龙100人在对象的范围
构造函数的问题:使用构造函数最重要的问题是每一个方法在每个实例上都重新创建一次。P1和P2有显示方法,但它们不是同一函数的实例,因为函数也是js中的对象,所以它们的普通显示方法不相等。

原型模型

每个函数都有一个原型属性,它是指向一个对象的指针,这个对象的目的是包含所有类型的所有实例都可以共享的属性和方法,也就是说,构造函数创建的对象的原型对象叫做

优点是允许所有对象的实例共享其属性的方法,也就是说,不需要在构造函数中定义实例的信息。
函数的CPerson(){
}
CPerson。原型名称= 'moon龙;
CPerson。原型性= '男人';
CPerson。原型。年龄= 100;
CPerson。原型。秀=函数(){
console.log(this.name,this.age,这个性别);
}
VaR P1 =新CPerson();
(P1。节目); / /谦龙男100
VaR P2 =新CPerson();
(P2。节目); / /谦龙男100
console.log(p1.show = = P2。节目) / /真的
以上是js面向对象创建的几种方法(工厂模式、构造函数模式、原型模式),希望您喜欢。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部