闭包
当内部函数被保存到外部,将生产闭包。IE低版本中闭包会导致原有作用域链不释放,造成内存泄漏
局部变量能在闭包中访问,但不能单独访问
- 满足以下特点的叫闭包:
- 函数嵌套
- 内部函数使用外部函数的变量和形参
- 被引用的参数和形参不会被销毁
- 闭包的优点:
- 变量常驻内存
- 避免全局污染
- 可以声明私有成员
继承
- 面向对象的特点之一:类的继承
- 继承:子类继承父类的属性和方法,目的是 让子类的实例能调取父类中的属性和方法。
- 原型对象中的原型继承:先在自身属性和方法中找,如果没有,沿着原型链查找;原型继承目的是让父类中的方法在子类实例的原型链上
Child.prototype = new Parent(); Child.prototype.constructor = Child;
特点: 其他语言的继承一般是拷贝继承,而 JS
中的原型继承是把父类的原型放到子类实例的原型链上完成继承,子类实例想调取父类的方法,是通过 _proto __
原型链来完成
预编译
JS
运行步骤:语法分析,预编译,解释执行- 浅层导引:函数声明整体提升,变量 声明提升
- 预编译前奏:
imply global
暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量为全局变量。 一切声明的全局变量,全都是window
的属性。window
就是全局的域 - 预编译过程:发生在函数里的预编译
- 创建
AO
(执行期上下文) 对象 - 找形参和变量声明,将形参和变量名作为
AO
属性名,值为undefind
- 将实参值与形参相统一
- 在函数体里找函数声明,值赋予函数体
- 创建
- 发生在全局里的预编译
- 创建
GO
(执行期上下文) 对象 ;GO==window
- 找形参和变量声明,将形参和变量名作为
GO
属性名,值为undefind
- 在函数体里找函数声明,值赋予函数体
- 创建
数组
- 概念:数组是一种数据类型
- 作用:使用单独的变量名来存储一系列的值
- 数据类型:
- 基本数据类型
- 特殊数据类型
- 复合数据类型
- 声明数组
- 通过
new
创建数组 - 省略
new
运算符创建数组- 【注】上面两种方法,传入参数只有一个,并且是数字的时候,表示直接声明这么长的
- 用中括号表示数组
- 数字属性
数组.length
——返回数组中元素的个数
- 访问元素
数组[下标]
- 通过