原型链
回顾一下上节课的内容,只要是对象就会有__proto__原型存在,那么我们Star的prototype里有没有__proto__这个对象原型呢?
让我们打印试试看:
那这个__proto__指向的是谁呢?
最后经过验证就是这样的(我晕了):
原型链指的就是这一条:
所以通过这个我们就能得出JavaScript的成员查找机制(规则)
this指向问题
1.在构造函数中,里面的this指向的是实例对象
2.在原型对象函数里面的this指向的是实例对象
扩展内置对象
可以通过原型对象,对原来的内置对象进行扩展自定义的方法.比如给数组增加自定义求和的功能
因为Array本身是没有求和方法的,现在就来写一个试试:
注意: 数组和字符串内置对象不能给原型对象覆盖操作Array.prototype = {},只能是Array.prototype.xxx = function() {}的方式
学到这里开始感觉有点难度了qwq,继续加油吧唉
继承
ES6之前并没有给我们提供extends继承.我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承
call()
调用这个函数,并且修改函数运行时的this指向
fun.call(thisArg, arg1, args2)
1.call()可以调用函数
2.call()可以改变this的指向
一开始this指向的是window这个对象,现在用call()改变this的指向,让他指向对象o.
借用父构造函数继承属性
那么该如何继承方法呢?
这时需要这样写一步,下面来分析一下
因为前面的做法导致Son的原型对象指向Father,要利用constructor指回原来的构造函数
今天先这样,等会洗个漱去学习别的了.