javascript继承
javascript的继承机制算是JS的一个难点了,之前很长一段时间对这一块的理解一直处于模糊状态,前端时间突然看到很久之前记录的笔记,突然茅塞顿开,特此记录一下,希望对广大网友能有所帮助。
首先想彻底搞懂javascript继承机制,我们需要先搞懂几个概念:
1、什么是javascript的原型
(1) prototype本质上只是一个JavaScript对象;
(2) 每个函数都有一个默认的prototype属性;
(3) 通过prototype我们可以扩展Javascript的原型对象;
(4) 原型对象中的所有属性,子对象可直接使用,不用重复创建;
var park = function(name){
this.name = name;
}
park.prototype.getParkName = function(){
console.log(this.name);
}
getParkName方法被添加到了park函数的prototype属性上了。
2、原型链又是什么?
由各级对象的_ proto _属性连续继承实现的链式结构。
注意:__proto__就是指向原型上的prototype
原型链有几个特点:
1、保存了对象的共有属性和方法。
2、控制着对象属性的使用顺序: 先用自有的,自己没有,再延原型链向父对象查找,只要找到就能用。
(此处不完全懂没关系,后面会详细讲解)
3、constructor 到底指的是什么?
1、constructor就是对象原型的一个属性;
2、constructor 默认指向创建当前对象的构造器函数;
4、New 调用构造函数的时候到底发生了什么?
1、创建一个空对象;
2、让新对象继承构造函数的原型对象, 即设置新对象的_ _ proto _ _ 属性指向构造函数的原型对象;
3、用空对象调用构造函数(将构造函数中的this自动指向空对象);
4、 返回新对象地址