每天几个前端小知识

简介: 每天几个前端小知识

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,时,就需要实现浅拷贝

目录
相关文章
|
7月前
|
移动开发 前端开发 JavaScript
大前端时代
大前端时代
101 1
|
7月前
|
前端开发
前端必看的8个HTML+CSS技巧 (2)
前端必看的8个HTML+CSS技巧 (2)
|
7月前
|
前端开发 JavaScript 测试技术
前端 (3)
前端 (3)
27 0
|
7月前
|
前端开发 程序员 数据处理
关于前端的一些
关于前端的一些
44 1
|
7月前
|
移动开发 前端开发 JavaScript
前端
前端
50 0
|
编解码 移动开发 前端开发
什么是前端?
一、什么是前端 前端是指网页开发中与用户交互直接相关的部分,包括网页的设计、布局、交互以及与后端进行数据交互的功能。前端开发主要使用HTML、CSS和JavaScript等技术来实现网页的展示和交互功能。前端开发人员通常负责将设计师提供的网页设计转化为网页代码,并与后端开发人员进行协作,实现网页的功能和数据交互。前端开发的目标是提供用户友好的界面和良好的用户体验。 二、前端的特点 前端开发具有以下几个特点: 1. 用户界面设计:前端开发主要负责网页的设计和布局,包括页面的样式、排版、色彩等,以及用户交互的设计。前端开发人员需要具备一定的美学和设计能力,以提供用户友好的界面和良好的用户体验。
289 0
|
7月前
|
前端开发 JavaScript
前端必看的8个HTML+CSS技巧 (1)
前端必看的8个HTML+CSS技巧 (1)
|
缓存 小程序 前端开发
每天几个前端小知识
每天几个前端小知识
61 0
|
前端开发
前端,理解this
前端,理解this
63 0
|
Web App开发 前端开发 JavaScript
纯前端实现视频混流
随着前端音视频技术的不断成熟越来越多的直播平台开始提供网页开播的直播方式,不需要再使用 OBS 或者各家的直播伴侣。
546 0