1,什么是同步异步
同步:在JavaScript中 同步就是先执行完上层代码 在执行下层代码一步一步执行
异步:可以同时执行的代码
2,程序进程线程
程序:功能
进程:进程不是程序,是进程执行的过程
线程:程序执行过程中开启的每个分支,多线程异步可以提高进程的效率
3,什么是Ajax
Ajax是前后端数据交互的重要手段,使用Ajax可以 无刷新状态 更新页面,并且实现异步提交,极大提升了用户体验
Ajax的优缺点
1-不需要插件支持
2-用户体验感强(无刷新状态更新页面)
3-提升web程序的性能(传递数据可做到按需发送,不必整体提交)
4,箭头函数与普通函数的区别
1-没有自己的this
2-语法极简,当只传入一个参数时可省略小括号,只有一个返回值是可省略 { }
3-不能被new执行
4-不能使用Arguments
5,什么是伪数组
1-不能使用数组的方法
2-按照索引方式存储数据
3-具有length属性
6,什么是闭包函数
1-创建一个不会被销毁的作用域执行空间
2-直接或间接返回一个函数
3-外部有变量接收到返回的复杂数据
4-返回的这个函数使用了外部函数的局部变量
(闭包就是能够访问其他函数的局部变量的函数)
7,闭包的特点
1-可以在函数外部控制内部的变量
2-避免全部变量的命名污染
3-延长了变量的生命周期
4-存在不会被销毁的执行空间 (低版本会造成内存溢出)
8,set 和 map
set 是无序无重复的值集合
1. 所得元素的只有key没有value,value就是key
2.不允许出现键值重复
3.所有的元素都会被自动排序
map 是无序无重复的值值对集合
1.所有元素都是键+值存在
2.不允许键重复
3.所有元素是通过键进行自动排序的
4.map的键是不能修改的,但是其键对应的值是可以修改的
9,new 的原理
1-创建一个新对象
2-改变函数内的this指向为这个新函数
3-执行函数内的代码,并将新函数的_ _prototype_ _ 指向新函数的 prototype
4-检查是否返回新函数,如果没有则返回这个新对象(this)
10,观察者模式(订阅者模式)
定义了一种一对多的关系,多个观察者对象同时监听同一个主题对象,这个主体对象发生变化时会通知所有的观察者对象,使他们能够自动更新自己
11,this指向问题
谁执行了this所在的函数 this就是谁
1-默认绑定:没有明确的隶属对象,被直接调用时this 指向window ,严格模式下为 undefined
2-隐式绑定:有明确隶属对象,this指向该对象
3-显示绑定:call,aplay,bind 强制绑定改变this指向 第一个参数改变this指向
4-构造函数绑定:new绑定
1-创建一个新对象
2-改变函数内的this指向为这个新函数
3-执行函数内的代码,并将新函数的_ _prototype_ _ 指向新函数的 prototype
4-检查是否返回新函数,如果没有则返回这个新对象(this)
12,call,apply,bind 的区别
第一个参数都是改变this的指向
call 可以有多个参数,返回值以原函数的返回值为主
apply 第二个参数只能是数组,自动解析作为参数
bind 可以有多个参数,返回值是改变this指向后的新函数
13,什么是原型链
对象从原型继承属性的过程
现在自身查找,找不到去父级查找,依次向上,直到找到 或 为 null结束
14,原型对象
原型是function 对象的一个属性 它定义了构造函数制作出的对象的公共祖先,通过改构造函数产生的对象,可以继承改原型的属性和方法 原型也是对象 ,所有的原型对象都是由 object构造函数创建出来的
15,原型
原型是一个对象,是函数的一个属性 prototype,通过该函数实例化出来的对象都可以继承得到原型上所有的属性和方法