🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 什么是继承? ``` 通过某种方式让一个对象可以访问到另外一个对象的方法和属性 ``` ### 为什么使用继承? ``` 有些对象会有方法(动作、行为),而这些方法都是函数,如果把这些方法和函数都放在构造函数中声明就会导致内存的浪费 ``` ``` function Person(){ this.say=function(){ console.log("你好") } } var p1=new Person(); var p2=new Person(); console.log(p1.say == p2.say); //false, 内存浪费 ``` ``` 解决方法: 把say方法写到他们共同的父对象中 Person.prototype.say = function(){} console.log(p1.say == p2.say); //true,指向了同一方法,避免了内存浪费 console.log(p1.say == Person.prototype.run); //true 结论: 只要在构造函数的prototype对象中添加某个属性方法,那么这样的属性和方法就可以被所有的构造函数的实例所共享 这里的构造函数的prototype对象称之为原型对象 ``` ``` p1, p2的原型对象是谁? Person 创建了p1, p2, 所以Person.prototype是p1的原型对象 Person的原型对象是谁? Function创建了Person, 所以Function.prototype是Person的原型 ```