js重要概念
原型和原型链
js中所有函数都有一个原型对象属性prototype,所有函数默认原型式object的实例,
原型链是原型组成的链,对象的_proto_是他的原型,原型的_proto_也是一个原型,这样依次向上查找,找到object为原型的时候这条链结束
实现原型链的基本模式是,让当前构造函数的原型对象等于另一个构造函数的实例。
文章链接
在js中万物皆对象,对象又分为两种:普通对象(Object)和函数对象(Function)。
任何对象都具有隐式原型属性(proto),只有函数对象有显式原型属性(prototype)。
原型链:原型链是针对原型对象的,在查找实例属性时,现在实例中查找,如果没有找到,再到obj.proto(=f1.prototype)原型对象,再到f1.prototype.proto(=f2.prototype),依次向上查找。
作用域链:作用域链是针对变量的,现在自己的变量范围内查找,找不到,再沿着作用域往上查找。
构造函数、原型对象和实例之间的联系(图示)
构造函数、原型对象、子类构造函数、子类原型对象和子类实例之间的联系(图示)
继承
参考链接
###父类(继承谁,提供继承属性)
function Person(name){//给构造函数添加参数 this.name=name; this.sum=function () { alert(this.name) } } Person.prototype.age=10;//给构造函数添加原型属性
原型链继承
借用构造函数继承
组合继承(原型链+构造函数)
原型式继承
寄生式继承
寄生组合式继承(常用)