Javascript------Day14
- 01.两种编程思想
- 02.构造函数实现封装以及存在的问题
- 03.原型对象prototype
- 04.数组扩展案例---求最大值和数组求和
- 05.constructor属性以及应用
- 06.对象原型_proto_
- 07.原型继承
- 08.原型链以及instanceof运算符
01.两种编程思想
js用面向对象来写需要用到的构造函数和原型。
目录
js是面向过程的编程语言。而面向对象编程是这样的:
对比:
02.构造函数实现封装以及存在的问题
构造函数:
this就是那个实例对象。
(这里指向ldh,再创建一个指向zxy)
原本应该是两个function一样,但是实际上这里是不一样的。
(引用类型本体存在堆内存里,堆内存回收成本高)
解决方案在下文
总结:
03.原型对象prototype
目录
第一点详细解释:第二点详细解释:
是属性也是对象。(Star.prototype => object)对象.sing 本质等价于 原型链向上查找 Star.prototype.sing
(这里对象.sing 等价于 Star.prototype.sing)
ldh实例自身没有 sing;
引擎自动跳到 ldh.__ proto __ === Star.prototype ;
在原型对象找到 sing 函数。
所以属性和方法可以分开写:
理解:
总结:
this指向
this指向总结:
04.数组扩展案例---求最大值和数组求和
案例:
05.constructor属性以及应用
constructor属性以及应用:
请看下图:
所以,
如下图:
应用/使用场景:如下图:
做出如下对比:
这样就会分不清方法到底是属于哪一个构造函数的了(即找不到父级了)
所以,采取如下方法:
提问:
06.对象原型_proto_
学习对象原型__proto__前的思考
先前学了原型对象 ,现在我们来学对象原型 。(记住是各两个下划线)
所以,关系图如下:
总结:
课后作业:
07.原型继承
JS大多是借助原型对象 实现继承的特性。
详细解读:继承,我们需要借助原型对象,原因如下:
注意,要让constructor指回Woman :
但是,这样做也有弊端:
这是因为他们继承的都是同一个对象。
解决方案:构造函数。解读:
08.原型链以及instanceof运算符
原型对象也是对象。
对象原型指向原型对象。
Object已经是最大的了,再往上指就是指向null。
这就是我们所说的原型链:
主要说的是:
总的来说:
查找规则:
原型链就是查找规则。
最后,我们再来补充一个运算符:(第⑥点)如果不清楚可以去MDN里查看:



































































