NodeJS相关/Web服务器
Node.js
事件驱动异步I/O单进程的服务端JS环境,具有事件循环。浏览器是JS的前端运行环境;Node JS是JS的后端运行环境,在后端中运行无法调用DOM和BOM等浏览器内置API。
模块化
NodeJs基于Commonjs模块化开发的规范
导出:exports/module.exports
- 共同点:导出模块
- 不同点:module.exports它可以导出对象,而exports不可以
- exports = module.exports 引用 本质:原型指向
导入:require(路径)
flex布局
Flex布局 1 2 3 4 Flex容器:采用 Flex 布局的元素的父元素; Flex项目:采用 Flex 布局的元素的父元素的子元素; 容器默认存在两根轴:水平的主轴(
TypeScript数据类型/类/泛型
TypeScript
数组、元组、自定义、联合类型;断言;TS编译配置;TS类概念;泛型
模块化与TypeScript的基本数据类型
模块化
方案:AMD[requirejs]、CMD[seajs]、CommonJS[nodejs]和ES6
AMD和CMD,两者的区别是前者是对于依赖的模块提前执行,而后者是延迟执行。 前者推崇依赖前置,而后者推崇依赖就近,即只在需要用到某个模块的时候再require。
CMD 有async方法实现异步
new/call/bind/instanceof的实现与代理
类
重写new
new内部过程:创建一个实例对象,this指向当前这个实例对象,会自动把函数执行,但是this内部指向变为实例对象,返回值没有或者是基本值,则返回实例对象;如果是引用值,以定义好的为主。
类/原型与原型链
类
构造函数和普通函数
相同点:
定义的方式,都是通过function来定义
执行时参数传递方式一样
都会形成私有上下文,都有私有变量
不同点:
构造函数执行通过new
来执行,在执行时浏览器会在当前上下文中创建一个实例对象,并且会让函数中的this指向到这个实例对象中,而普通函数中的this指向为window。
函数如过没有返回值或返回值为基本类型值,则返回undefined
或你指定的返回值;如果是构造函数,它没有返回值,则返回当前的实例对象,如果有返回值,返回值是基本类型则也是返回当前对象,当返回的是引用类型,则返回你所指定的类型。
构造函数:箭头函数没有this,不能当构造函数,箭头函数没有prototype;ES6简写没有prototype;
节流/防抖与对象
防抖与节流
函数防抖和函数节流都是防止某一时间频繁触发,但是这两者之间的原理却不一样。
函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。
防抖
在高频操作下,只识别一次触发(事件的开始时刻或者结束时刻),实现:一般设置一个阈值,在阈值内无论操作多少次,程序只执行一次。
节流
高频操作下,按照规定好的时间为间隔触发一次,等待变化一会在执行程序,避免资源浪费。规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
作用域与闭包
作用域
全局作用域、函数作用域、块级作用域
作用域链会向上查找,找到全局window时中止==>not defined;函数被执行后其环境变量将从内存中删除,函数每次调用会创建一个新作用域。
如果子函数将被使用时,父级环境将保留,不会被释放。===闭包
块级作用域-ES6中添加的,使用let/const 定义的具有块级作用域,var没有块级作用域
Jquery之尺寸/位置/网络请求
Jquery:
尺寸
获取元素的宽高:width()–返回数值类型
- 当有参数时(数字)表示设置宽高
包含内边距:–只能获取,返回数值类型,不能设置
- innerWidth()
包含边框和宽高(如果参数为true->表示包括外边距):
- outerWidth()
位置
获取、设置元素相对于文档的偏移坐标和父级没有关系,返回为对象{top,left},值为数值;设置时参数为对象类型
- offset()
获取、设置元素被卷去的头部和左侧距离
- scrollTop([数字])/scrollLeft([数字])