01.如何创建对象?
创建对象以大括号的方式,如
如果以学生为例,有年龄‘、有身高,当然有名字,有方法
这是最基本的对象创建方式。如果这么多学生是不是都要一个对象呢?例如:
以此类推,重复性代码太多,无法达到。当然优点是简单,方便。那缺点是无法达到量产,也是重复性代码太多。
02.工厂模式
以学生为例,有年龄‘、有身高,当然有名字,有方法
但是S1和S2的结果都是一样的,无法改变。
而这个只增加了形参,可以改变学生的信息(如名字,年龄,以及身高等)。
如果在学生对象与老师对象面前是无法判断类型的,
比如
那么优点是可以量产指定的对象,而且还能节约重复性代码,弊端是通过这个工厂模式创建的对象,没法去检测对应 的类型。
03.构造函数
在JS中,用构造函数代表类,来模拟类,原本不存在类的概念.在其他语言中,如JAVA、python等,都有类。
类:是描述一系列相同类型事物的总称 ,比如人、动物等。
以学生为例,有年龄‘、有身高,当然有名字,有方法
new的过程做了什么?
第一步:创建一个空对象{}
第二步:将构造函数中的this指向空对象
第三步:将构造函数中所有属性和方法都赋值给空对象
第四步:直接将这个对象返回,并用变量接收
构造函数:在JS中this的指向性?
this在new的过程中,指向产生的对象。在面向事件编程中,this指向是指事件源。在方法的调用中,调用方法所对的对象。
通过同一个类(构造函数)创建出来的对象,其原型指向共同的对象(原型对象__proto__)
构造原型对象是prototype
构造函数好处:1.可以量产 2.解决工厂模式无法分辨指定类型问题。同样有弊端:同样的方法,会开辟不同的存储空间,造成内存大量消耗。
04.原型模式创建对象
将共有的方法写到构造函数的原型中,实例化对象之后,就可以通过原型拿到其共有的方法