1.面向对象就是使用对象。
2.面向过程就是用过程的方式进行开发。
抽象性
封装性
继承性
一、在传统的面向对象语言中,使用一个叫类的东西定义模板,然后使用模板创建对象。
二、在构造方法中也具有类似的功能,因此也称其为类
一、实例一般是指某一个构造函数创建出来的对象,我们称为XXXX 构造函数的实例
二、实例就是对象。对象是一个泛称
三、实例与对象是一个近义词
一、在JS中键值对的集合称为对象
二、如果值为数据(非函数),就称该键值对为属性
三、如果值为函数(方法),就称该键值对为方法method
1.传统的面向对象语言中使用类来实现继承那么就有父类、子类的概念
2.父类又称为基类,子类又称为派生类
3.在JS中没有类的概念,在JS中常常称为父对象,子对象,基对象,派生对象。
构造函数是干什么用的
1.初始化数据的
2.在JS中给对象添加属性用的,初始化属性值用的
创建对象的过程
1.代码:var o = new Object();
2.首先运算符new创建了一个对象,类似于{},是一个没有任何(自定义)成员的对象。
3.然后调用构造函数,为其初始化成员
4.在构造函数中 利用 对象的动态特性 为其对象添加成员。
什么是作用域
域表示的就是范围,即作用域,就是一个名字在什么地方可以使用,什么时候不能使用。
JS中词法作用域的规则
1.函数允许访问函数外部的数据
2.整个代码结构中只有函数可以限定作用域
3.作用规则首先使用提升规则分析
4.如果当前作用域中有了名字了,就不考虑外面的名字
**
闭包**
什么是闭包?
闭包的含义就是闭合,包起来,简单的来说,就是一个具有封闭功能与包裹功能的结构。所谓的闭包就是一个具有封闭的对外不公开的,包裹结构,或空间。
为什么函数可以构成闭包?
闭包就是一个具有封闭与包裹功能的结构,是为了实现具有私有访问空间的函数的。函数可以构成闭包。函数内部定义的数据函数外部无法访问,即函数具有封闭性;函数可以封装代码即具有包裹性,所以函数可以构成闭包。
闭包有什么用
闭包不允许外部访问,要解决的问题就是让外部间接访问函数内部的数据。事实上,通过使用闭包,我们可以做很多事情。比如模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的执行效率。
1.匿名自执行函数
一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。
2.缓存
闭包正是可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。
3.实现封装
4.模拟面向对象的代码风格
闭包的基本模型
1.对象模式
函数内部定义个一个对象,对象中绑定多个函数(方法),返回对象,利用对象的方法访问函数内的数据
2.函数模式
函数内部定义一个新函数,返回新函数,用新函数获得函数内的数据
3.沙箱模式
沙箱模式就是一个自调用函数,代码写到函数中一样会执行,但是不会与外界有任何的影响
闭包的性能问题
函数执行需要内存,那么函数中定义的变量,会在函数执行结束后自动回收,凡是因为闭包结构的,被引出的数据,如果还有变量引用这些数据的话,那么这些数据就不会被回收。因此在使用闭包的时候如果不使用某些数据了,一定要赋值一个null
var f = (function () {
var num = 123;
return function () {
return num;
};})();
f = null;