原型

  • 我们平时写function函数时,其实是Function() {}通过仿照function() {}创造出来的。每个function 都存在一个prototype属性,这个属性可以理解为 用来依照这个属性去创建别的函数或对象。
  • 我们平时写的对象var obj = {},其实是以object为原版,被Object创建出来的。
  • 向上宿主就是:

‘object’ function Object Function

function是以object为原版被Function创建
Function是以function为原版被自己(Function)创建
Object是以function为原版被Function创建
Object和Function的原版是null
Object以null为原版造出了object
其他function都是以function为原版被Function创建的 prototype为object
其他的new Object 都是以object为原版被Object创建的

当拥有一个函数时,这个函数就拥有了一个prototype属性,这个属性是个对象,对象中包含一个constructor属性,指向这个函数。还包含一个__proto__ 是这个函数的原型链,也就是它自己的原版.

当创建一个这个函数的实例时,实例是一个对象,自动拥有constructor属性,指向构造它的函数。还包含一个__proto__属性 是这个对象的原型链,也就是它的原版

当创建一个父类SuperClass时

// 父类
function SuperClass() {
    this.getName = function() {
    }
}
// 子类
function SubClass() {

}

子类继承父类,是指子类继承父类的公有属性和公有方法
相当于在子类中,复制一份父类的公有属性和公有方法,相当于以父类为
原版,在子类中构建一份,或者是在子类中可以拿着原型链,向上溯源,找到父类的公有属性和公有方法

SubClass.prototype = new SuperClass()

我们将子类构造函数的prototype 赋值为父类的实例
子类会对父类的公有方法覆盖,不管该方法传参和内部实现是否一致,都将用子类的方法覆盖父类的方法


chidaozhi
60 声望4 粉丝

前端老阿姨