Jquery篇
11.echarts使用最多的是什么
百度团队开发的,提供了一些直观,易用的交互方式以便于对展示数据进行挖掘.提取.修正或整合,拥有互动图形用户界面的深度数据可视化工具
图表和图表组合
12.For循环与map循环有什么区别
For遍历对象自身的和继承可枚举的属性,也就是说会包括哪些原型链上
的属性
for:可以使用break提前结束 也可以使用continue
Map方法不会对空数组进行检测,map会返回一个新数组,不会对原数
组产生影响
map:遍历数组 不改变数组本身,有返回值产生一个新的数组 如果需要返回值必须要有一个return否则的话返回的是undefined
13.请写出一个简单的类与继承
创建类有三种:
使用function和this关键字
原型方法用prototype和this关键字
使用object.create()方法构造
继承有六种:
原生继承 生式继承 借用构造函数继承 寄生组合继承 组合继承 原生式继承
14.同步与异步的区别/阻塞与非阻塞区别
同步(阻塞的)
异步(非阻塞)
比如:同步,咱两在一起上班,到吃饭时间了,我去喊你一起吃饭,你
很忙,我就坐着等你忙完再一起去吃饭
异步,咱两在一起上班,到吃饭时间了,我去喊你一起吃饭,你很
忙,我就先自己去吃了,你忙完了再去吃饭
同步(阻塞)异步(非阻塞)这两个关注的是程序在等待调用结果时的
状态
15.重绘和回流是什么
回流:当rendertree中的一部分或者全部因为元素的规模尺寸,布局,
隐藏等改变而需要重新构建,这就叫回流,每个页面至少需要一次回流,
就是在页面第一次加载的时候,这时候一定会发生回流,因为要构建
rendertree
在回流的时候,浏览器会使渲染树中收到影响的部分失效,并重新构造
这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,
这就是重绘
当rendertree中的一些元素需要更新属性,而这些属性只是影响元素的
外观,不会影响布局,就叫重绘
16.http是什么?有什么特点
http叫做超文本传输协议,是互联网应用最广泛的一种网络协议
特点:基于请求-响应的模式无状态保存无连接
17.HTTP协议和HTTPS区别
http是超文本传输协议,信息是明文传输,https是具有安全性的ssl解
密传输协议
http和https连接方式完全不同,端口也不同,http是80,https是443
http的连接很简单,是无状态的,https协议是由ssl+http协议构建的
可进行加密传输,身份认证的网络协议,比http协议安全
18.原型和继承,prototype,call和apply继承的区别(第一个参数是相同的,第二个的区别在哪)
apply()接收两个参数,一个是函数运行的作用域(this),另一个是参数数
组。
call()方法第一个参数与apply()方法相同,但传递给函数的参数必须列举
出来。
19.箭头函数与普通函数的区别
箭头函数是匿名函数,不能作为构造函数,不能使用new
箭头函数不能绑定arguments,要用rest参数解决
箭头函数没有原型属性
箭头函数的this永远指向其上下文的this,
箭头函数不能绑定this,会捕获其所在的上下文的this值,作为自己的
this值
20.什么是js内存泄露?
1、文件合并(目的是减少http请求)
2、文件压缩(目的是直接减少文件下载的体积)
3、使用cdn托管资源
4、使用缓存
5、gizp压缩你的js和css文件
6、meta标签优化(alt,title,description,keywords)、heading标签的优
7、反向链接,网站外链接优化
21.请简述ajax的执行过程以及常见的HTTP的状态码
100:这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来
通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求
请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会
在请求完成后向客户发送一个最终的结果
200:这个是最常见的http状态码,表示服务器已经成功接受请求,并
将返回客户端所请求的最终结果
202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终
会不会处理还不确定
204:服务器成功处理了请求,但没有返回任何实体内容,可能会返回
新的头部元信息
301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,
返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的
链接发出请求,已返回请求结果
404:请求失败,客户端请求的资源没有找到或者是不存在
500:服务器遇到未知的错误,导致无法完成客户端当前的请求。
503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求
22.预加载和懒加载的区别,预加载在什么时间加载最合适
预加载是指在页面加载完成之前,提前将所需资源下载,之后使用
的时候从缓存中调用;懒加载是延迟加载,按照一定的条件或者需求等
到满足条件的时候再加载对应的资源
两者主要区别是一个是提前加载,一个是迟缓甚至不加载。懒加载对服
务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。
23.Jquery选择器有哪些
一、基本选择器
基本选择器是jQuery中最常用也是最简单的选择器,它通过元素的id、
class和标签名等来查找DOM元素。
1、ID选择器#id
描述:根据给定的id匹配一个元素,返回单个元素(注:在网页中,id
名称不能重复)
示例:$("#test")选取id为test的元素
2、类选择器.class
描述:根据给定的类名匹配元素,返回元素集合
示例:$(".test")选取所有class为test的元素
3、元素选择器element
描述:根据给定的元素名匹配元素,返回元素集合
示例:$("p")选取所有的<p>元素
4、*描述:匹配所有元素,返回元素集合
示例:$("*")选取所有的元素
5、selector1,selector2,...,selectorN
描述:将每个选择器匹配到的元素合并后一起返回,返回合并后的元素集合
示例:$("p,span,p.myClass")选取所有<p>,<span>和class为
myClass的<p>标签的元素集合
二、层次选择器
层次选择器根据层次关系获取特定元素。
1、后代选择器
示例:$("pspan")选取<p>元素里的所有的<span>元素(注:后代选择器选择父元素所有指定选择的元素,不管是儿子级,还是孙子级)
2、子选择器$("parent>child")
示例:$("p>span")选择<p>元素下的所有<span>元素(注:子选择器只选择直属于父元素的子元素)
3、同辈选择器$("prev+next")
描述:选取紧接在prev元素后的next元素,返回元素集合
示例:$(".one+p")选取class为one的下一个<p>同辈元素集合
4、同辈选择器$("prev~siblings")
描述:选取prev元素后的所有siblings元素,返回元素集合
示例:$("#two~p")选取id为two的元素后所有<p>同辈元素集合
三、过滤选择器
1>基本过滤选择器
1、:first
描述:选取第一个元素,返回单个元素
示例:$("p:first")选取所有<p>元素中第一个<p>元素
2、:last
描述:选取最后一个元素,返回单个元素
示例:$("p:last")选取所有<p>元素中最后一个<p>元素
3、:not(selector)
描述:去除所有与给定选择器匹配的元素,返回元素集合
示例:$("input:not(.myClass)")选取class不是myClass的<input>元素
4、:even
描述:选取索引是偶数的所有元素,索引从0开始,返回元素集合
5、:odd
描述:选取索引是奇数的所有元素,索引从0开始,返回元素集合
6、:eq(index)
描述:选取索引等于index的元素,索引从0开始,返回单个元素
7、:gt(index)
描述:选取索引大于index的元素,索引从0开始,返回元素集合
8、:lt(index)
描述:选取索引小于于index的元素,索引从0开始,返回元素集合
9、:focus
描述:选取当前获取焦点的元素
2>内容过滤选择器
1、:contains(text)
描述:选取含有文本内容为text的元素,返回元素集合
示例:$("p:contains('我')")选取含有文本“我”的元素
2、:empty
描述:选取不包含子元素或者文本元素的空元素,返回元素集合
示例:$("p:empty")选取不包含子元素或者文本元素的空<p>元素(<p></p>)
3、:has(selector)
描述:选取含有选择器所匹配的元素的元素,返回元素集合
示例:$("p:has(p)")选取含有<p>元素的<p>元素(<p><p/></p>)
4、:parent
描述:选取含有子元素或者文本的元素,返回元素集合
示例:$("p:parent")选取含有子元素或者文本元素的<p>元素(<p><p/></p>或者<p>文本</p>)3>可见性过滤选择器
1、:hidden
描述:选取所有不可见的元素,返回元素集合
2、:visible
描述:选取所有可见的元素,返回元素集合
4>属性过滤选择器(返回元素集合)
1、[attribute]
示例:$("p[id]")选取拥有id属性的p元素
2、[attribute=value]
示例:$("input[name=text]")选取拥有name属性等于text的input元素
3、[attribute!=value]
示例:$("input[name!=text]")选取拥有name属性不等于text的input元素
4、[attribute^=value]
示例:$("input[name^=text]")选取拥有name属性以text开始的input元素
5、[attribute$=value]
示例:$("input[name$=text]")选取拥有name属性以text结束的input元素
6、[attribute*=value]
示例:$("input[name*=text]")选取拥有name属性含有text的input元素
7、[attribute~=value]
示例:$("input[class~=text]")选取拥有class属性以空格分割的值中
含有text的input元素
8、[attribute1][attribute2][attributeN]
描述:合并多个属性过滤选择器
5>表单对象属性过滤选择器(返回元素集合)
1、:enabled
描述:选取所有可用元素
2、:disabled
描述:选取所有不可用元素
3、:checked
描述:选取所有被选中的元素(单选框,复选框)
示例:$("input:checked")选取所有被选中的<input>元素
4、:selected
描述:选取所有被选中的选项元素(下拉列表)
示例:$("selectoption:selected")选取所有被选中的选项元素
24.Jquery插入节点的方法
append()向每个匹配的元素内部追加内容appendTo()将所有匹配的元素追加到指定元素中,实际上,使用该方法是颠倒了常规的$(A).append(B)的操作将A追加到B中
prepend()向每个匹配的元素内部前置内容
prependTo()将所有匹配的元素前置到指定的元素中。实际上,使用该方法是颠倒了常规的$(A).prepend(B)的操作,即不是将B前置到A中,而是将A前置到B中after()在每个匹配的元素之后插入内容insertAfter()将所有匹配的元素插入到指定元素的后面。实际上,使用该方法是颠倒了常规的$(A).after(B)的操作,即不是讲B插入到A后面,而是将A插入到B后面before()在每个匹配的元素之前插入内容insertBefore()将所有匹配的元素插入到指定的元素的前面。实际上,使用该方法是颠倒了常规的$(A).before(B)的操作,即不是将B插入到A前面,而是将A插入到B前面
25.Js的函数节流和函数防抖的区别
函数节流是指一定时间内js方法只执行一次。
函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一
次
函数节流是声明一个变量当标志位,记录当前代码是否在执行,如果正在执行,取消这次方法执行,直接return,如果空闲,正常触发方法执行
函数防抖是需要一个延时器来辅助实现,延迟执行需要执行的代码,如果方法多次触发,把上次记录的延迟执行代码用cleartimeout清除掉,重新开始,如果计时完毕,没有方法来访问触发,则执行代码、
26.Get和post不同
Get是从服务器上获取数据,post是向服务器传送数据在客户端,get通过url提交数据,数据在url中可以看到,post方式,数据放在htmlheader中提交安全性问题Get提交数据最多只能有1024字节,post没有限制
27.什么是csrf攻击
Csrf(跨站点请求伪造)攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份再攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的Js中手写一个深拷贝
28.什么时候用深拷贝/浅拷贝
无论深浅,都是需要的,当深拷贝发生时通常表明存在着一个聚合关系,当浅拷贝发生时,通常表明存在着相识关系举个简单例子:当实现一个组合模式CompositePattern时通常都会实
现深拷贝当实现一个观察者模式ObserverPattern,时,就需要实现浅拷贝