1:什么是原型与原型链;
1:原型: 1:每一个对象都会在内部初始化一个属性,就是prototype(原型); 2:简单来说就是一个模板,准确来说是一个对象的模板;2:原型链: 1:在我们访问一个对象的属性时,访问不到或者不存在的时候,那么他就会去protoType里面去找,但是prototype也有自己的prototype,那么他就会一直这样找下去,这个就是我们所说的原型链; 2:简单的来说就是利用原型让一个引用类型继承另外一个引用类型的数据与方法;
2:什么是继承与封装;
1:继承是一个面向对象编程中的一个概念,简单来说就是通过继承可以实现子类可以继承父类的所有属性与方法;2:封装就是把一些可以公用的代码封装成一个公共的模块,方便二次调用
3:什么是闭包;
1:闭包就是读取函数内部的变量的函数;2:优缺点是什么: 1:优点是:变量长期驻扎在内存中,避免变量的污染,封装; 2:缺点是:会增大内存的使用量,使用不当会造成内存泄漏;3:什么时候会用到闭包:常见的就是在封装函数与定时器的时候会用到闭包;
4:js中的作用域分为两种;
1:全局作用域,就是在函数外部声明的一个变量;2:局部作用域,就是在函数内部声明的一个变量;
5:HTTP与HTTPS的区别;
1:http是以文本的形式传输;2:https是通过ssl安全协议来传输;他们两个请求方式不同那么端口肯定也是不同的,http端口为80,https端口为443;
6:浏览器缓存三种方式;
1:Cookie,在你请求的时候http会默认给你携带一个Cookie,而且Cookie不能存储大于4K的数据;2:localStorage 存储的数据不手动删除,那么他会一直存在;3:sessionStorage 存储数据如果关闭当前浏览器,那么他就会自动删除;
7:js种数据类型,它分为两个;
1:基本类型:(null String Boolean undefined Number Symbol Bigint);2:对象类型:Object (function Date Array RegExp);3:基本类型与对象类型的区别是什么; 1:基本类型:本身就是独立的,不可以发生改变; 2:对象类型:代表是可以进行改变的;
8:判断某一个值是什么类型;
1:判断基本使用:typeOf (操作符)2:判断对象使用:inStanceOf (操作符)3:Object.prototype.toString.call();
9:ES6箭头函数与ES5普通函数的区别;
1:所有的箭头函数都是匿名函数,不能作为构造函数,也不能使用New;2:箭头函数不能绑定argumments取rest参数;3:箭头函数不存在原型属性;4:箭头函数的this指向是上下文,普通函数this指向是调用他的对象;5:箭头不能绑定this,但他可以把上下文的this作为自己的this去使用;
10:Get与Post的区别;
1:get是以URL传递参数;2:post是放在Request body中;
11:Promise是什么;
1:他是一个嵌套式的异步请求; 2:他有三种状态,分别是; 1:pending (初始化进行中); 2:fulfiled (操作成功); 3:rejected (操作失败); 3:他的优缺点; 1:优点:将异步操作如同步操作的流程表达出来,避免一层层嵌套回调的函数 2:缺点:无法取消(也就是说在你创建一个Promise对象那么他就会立即执行,并且中途是不可以取消的)
11:缓存的三种模式;
1:Cache Aside; (同时更新缓存与数据库)2: Read/write Through (缓存负责同步更新数据库)3: write Behind Caching (缓存定时异步更新数据库)
12:如何理解JSON;
1:json可以是对象也可以是json数据格式; 2: 将json对象转为(json字符串或json对象); 1:json字符串转为json对象:json.parse(); 2: json对象转为json字符串:json.stringify();
13:什么是跨域,以及如何解决;
1:跨域就是在你请求的时候有以下几点那么他都会造成跨越问题; 1:不同的地址; 2:不同的端口; 3:不同的级别; 4:不同的协议;2:如何解决跨越,有两点; 1:通过 jsonp 解决跨越; 2:通过 node.js 中间代理解决跨越;
14:解决数组的一些属性;
1:将一个数组转为字符串,转为数组; // 转为字符串 利用:join() var arr = [1,2,3,4,5]; console.log(arr.join(',')); // "1,2,3,4,5" // 转为数组 利用 solit() var arr = '1,2,3,4,5' console.log(arr.split(',')); // [1,2,3,4,5]2:将一个数组排序; var arr = [12,4,23,53,55,1,42,64,11]; // 升序 利用 sort(); arr.sort((a,b) => { return a - b }) // [1, 4, 11, 12, 23, 42, 53, 55, 64] // 降序 利用 sort(); arr.sort((a,b) => { return b - a }) // [64, 55, 53, 42, 23, 12, 11, 4, 1]3:数组反转; var arr = [1,2,3,4,5]; arr.reverse(); // [5, 4, 3, 2, 1]
以上就是个人在面试中碰到的一些问题,希望能对你带来帮助。
一个90后,前端程序员,写的不好还请多多关照。
【关注前端概念】