闭包
闭包是我们函数的一种高级使用方式,利用函数执行空间不销毁的逻辑。闭包的第一个条件是利用不销毁空间的逻辑,不是返回一个对象数据类型,而是返回一个函数数据类型。
闭包的特点:
优点:局部变量常驻内存
缺点:局部变量常驻内存,没有办法被回收,导致内部泄漏。
闭包的概念:
有一个A函数,在A函数内部返回一个B函数,再A函数内部访问着A函数内部的私有变量。
例:function test(){
闭包一般不主动去运用,写着写着就会出现。
原型:会保存对象的方法
每一个函数天生自带一个成员prototype,是一个对象空间。
原型的出现是为了解决构造函数的缺点。
当我们写构造函数的时候,属性直接写在构造函数体内,方法写在原型上。
原型链:
1 .当我们访问一个属性的时候,首先会在自身内存中查询,
2. 查询不到就去自己的原型里面找 对象的.__proto__(Array.prototype)
3. 原型本身也是对象,如果找不到就去 自己原型的原型找 arr.__proto__.__proto__
4. 一直去原型里查找,直到最后Object.prototype都找不到,就直接返回undefined。
继承
继承是和构造函数相关的一个应用,让一个构造函数去继承另一个构造函数的属性和方法。
子类 继承 父类, 子类就拥有了父类所有的属性和方法
Object 方法
Array 继承了 Object - 数组的原型指向了 Object的原型 只能继承方法
1 构造函数继承-弊端:只能继承属性,不能继承原型里的方法
2 原型链继承:能继承person的方法
3 混合继承
例: function WhitePerson(){
Person.call(this,11)}
WhitePerson.prototype = new Person()
4 最终版 class 类 extends 父类
原文:https://www.cnblogs.com/52580587zl/p/13178758.html