一.今日学习内容 1.闭包 概念:跨作用域访问变量,形成闭包,闭包是一种作用域的体现 闭包的标准写法 常见闭包写法:父函数嵌套子函数,子函数可以访问父函数的变量,把子函数返回或者挂载到window上:window.$名={} 2.闭包的作用 实现了早期的模块化开发,把所有的变量隐藏在内部,对外暴露统一的访问接口:暴露钥匙 隐藏变量,避免全局污染[ES6自带模块化开发] 闭包的优缺点 优点:隐藏了变量,避免全局污染,实现了早期的模块化开发 缺点:一旦形成了闭包,这个变量不会被内存释放,内存开销比较大,会造成内存泄漏,所以不建议过多使用闭包(ES6自带模块化开发可以解决这个问题) 3.面向对象思想 面向过程--POP 按照流程步骤,一步一步走,实现功能,每一步都是亲力亲为 优点:对流程细节把控清晰 缺点:不适合大型项目 面向对象OOP 从全局触发,把功能都封装在对象中,然后要做什么就找什么对象,调用对象的方法 优点:适合大型项目,把功能都封装在对象中 缺点:对细节把控不清晰 4.类和构造函数 const arr=new Array(); arr:实例对象 Array:构造函数(首字母大写的数据类型),ES5中,类===构造函数 字面量(let a=[];)是一种语法糖:真正执行的过程:new,所有的数组都是底层new出来的 构造函数:new 首字母大写的基本数据类型 赋值取值是通过valueOf 内置的类都是大写开头 构造函数不是对象,是内置的函数 constructor----构造函数 类===构造函数:ES5中 5.js内置构造函数 Array String Number Function Object Boolean Error RegExp... 作用:造(new处理)出各种各样类型的数据。实例化出来。new出各种实例对象,得到各种类型的数据 6.自定义构造函数特点 首字母大写 属性和方法都挂在this上 没有返回值 使用new来调用 #new的过程发生了什么 首先创建一个空对象 this指向这个实例对象 执行这个构造函数的代码--代码全部走一遍 自动返回this(实例对象)
|