公司面试题 探讨跨域请求资源的几种方式 一张图理解prototype、proto和constructor的三角关系

1.如何理解闭包

概念:有权访问另一个函数作用域内变量的函数都是闭包

 闭包应用列表输出不是3个3,而已对应位置的数
window.onload = function init(){ var lis=document.querySelectorAll("#text li"); for(var i=0;i<lis.length;i++){ lis[i].onclick=(function(e){ return function(){ alert(e); }; })(i) } }

2.什么是跨域?跨域请求资源的方法有哪些

(1).什么是跨域

由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。存在跨域的情况:

(2),探讨跨域请求资源的几种方式

  1. JSONP(这种方式主要是通过动态插入一个script标签。只能实现get)
  2. proxy代理
  3. cors:对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。具体来说,就是在头信息之中,增加一个Origin字段。

3.javascript实现继承的方法有哪些?

一张图理解prototype、proto和constructor的三角关系

传送门
<script> function Parent(age){ this.name = ['mike','jack','smith']; this.age = age; } Parent.prototype.run = function () { return this.name + ' are both' + this.age; }; function Child(age){ Parent.call(this,age);//对象冒充,给超类型传参 } Child.prototype = new Parent();//原型链继承 var test = new Child(21);//写new Parent(21)也行 alert(test.run());//mike,jack,smith are both21 </script>

4.px和em的区别

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

em是相对长度单位。相对于当前对象内文本的字体尺寸,多理解父级设定font-size的尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册),任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。

5.什么是设备像素比

设备像素比(window.devicePixelRatio) = 设备像素/设备独立像素 

6.什么是预加载和懒加载

1、延迟加载即懒加载,主要目的是作为服务器前端的优化,减少请求数或延迟请求数,在一些图片非常多的网站中非常有用,当图片位置进入到可视区的时候才会被加载,这样对于含有很多 图片的比较长的网页来说,可以加载的更快,并且还能节省服务器带宽

最常用的方式是:监控滚动条的高度,当滚动条高度和可视区高度之和小于图片位置距离页面的高度时会被加载

2、预加载:在查看前面张图片的时候加载后面的图片,在提升用户体验的同时会增加服务器的压力

常用方式:创建image对象,通过src属性加载url资源,当资源加载完成后,资源会被放在缓存中,当再次调用url的时候从缓存中读取

两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力

7.flex布局怎么实现居中?

flex属性详解

display: flex;
justify-content:center;//设置水平居中
align-items:center;//设置垂直居中

8.sessionStorage,localStorage和cookie之间的区别

9.如何提高页面性能优化

10.gulp和webpack区别

 gulp可以压缩 js、css、图片、html,webpack是打包工具,可以把项目的各种js、css文件等打包为一个或多个文件,主要用于模块化方案,预编译模块的方案。

gulp严格上讲,模块化不是他强调的东西,他旨在规范前端开发流程。

webpack更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。

 11.http和https的区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

12.写一个数组去重的方法

function uniq(array){
    var temp = []; //一个新的临时数组
    for(var i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) == -1){
            temp.push(array[i]);
        }
    }
    return temp;
}
var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5];
console.log(uniq(aa));

13.ajax

猜你喜欢

转载自www.cnblogs.com/wlhappy92/p/9568344.html