原型
- 我们平时写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 赋值为父类的实例
子类会对父类的公有方法覆盖,不管该方法传参和内部实现是否一致,都将用子类的方法覆盖父类的方法
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。