原型、继承

67 阅读2分钟
### **1:为什么要用原型链(好处)**
原型上所有的方法和属性都是可以被构造函数的实例共享
### **2:认识函数+原型定义**
(1)函数也是对象,当真正开始执行函数,执行环境(开发时为浏览器活控制台) 会为函数分配一个函数对象变量空间和函数对象空间,函数对象变量用函数名表示,存在栈空间,函数对象空间是在堆空间开辟的一个内存空间,这个空间中有一个默认的prototype属性,这个prototype属性就是一个原型对象属性也叫对象变量
(2)函数和构造函数的区别
当通过new关键字调用函数这个函数就是构造函数
(3)原型prototype是定义函数有js自动分配给函数的一个可以被所有函数构造实例对象共享的变量对象,也叫对象属性:
**### 3:如何访问原型对象空间上的属性和方法**
(1)构造函数所有实例对象都可以访问原型对象空间上的属性和方法每一个实例对象都有一个默认的proto属性,这个属性指向构造函数的prototype
(2)关于proto:new在创建新对象的时候,会赋予新对象一个属性指向构造函数的prototype对象空间,这个属性就是proto
(3)也可以直接通过构造函数.prototype对象属性来访问原型对象空间的属性和方法
### **构造函数实例【也叫对象】如何访问原型对象空间上的属性和方法**
(1)构造函数实例访问一个属性和方法,首先从实例空间中查找(当执行环境执行new构造函数()时,构造函数中用过this定义的属性和方法会分配在这个空间中),如果改找到该属性就停止查找,表示找到了,如果没有找到会继续在该实例的原型对象空间中去查找改属性和方法