原生js
1.改变this指向的三个方法
bind() call() apply()方法
2.本地存储和cookie
区别
1. cookie存储的数据比较小
2. cookie不能实现永久存储
3. cookie存储在服务器,而本地存储存储在客户端
本地存储的方法
1. localStorage.getItem(key) // 取值
2. localStorage.setItem(key,value) // 存值
3. localStorage.removeItem(key) // 删除某一个
4. localStorage.clear() // 全部清空
设置cookie
function setCookie (key,val,date){
var oDate = new Date();
oDate.setDate(oDate.getDate()+date);
document.cookie = key + '=' + val + ';expires = ' + oDate
}
读取cookie
function getCookie (name) {
var str = document.cookie;
var arrStr=str.split("; ")
//遍历数组
for (var i = 0; i < arrStr.length; i++) {
// console.log(arrStr[i]);
var arr=arrStr[i].split("=")
// console.log(arr);
if(arr[0]==name){
return arr[1]
}
}
}
console.log(getCookie('username'))
删除cookie
function delCookie(name){
setCookie(name,'',-1) // 设置对应的字段为空,时间是-1就行了
}
delCookie('id')
-
原生js如何实现事件委托?
获取事件对象,做兼容,通过e.target判断触发的目标元素是否是当前元素
-
数组冒泡排序的原理?
通过比较两个相邻的元素,如果前一个比后一个大,则交换位置,并赋值给一个中间变量,以此类推
-
原生js和jq怎么复制元素,穿参数的区别
原生js let div = document.querySelect('.wrap') div.cloneNode(true).appendChild(document.body) 参数: 1. 为true的时候,表示复制当前元素以及当前元素所有子元素 2. 为false的时候,表示复制复制只复制当前元素 jq $('.wrap').clone(blooean) 参数 1. 为true的时候表示复制当前元素和事件处理 2. 为false的时候表示只复制当前元素
-
Ajax的原理?
通过XMLHtppRequest对象向服务器发送异步请求,然后通过js动态操作DOM更新页面
-
Ajax为什么会有跨域?
同源策略问题,规定同一个域名,端口号,协议名才能操作域下的资源
-
如何解决跨域问题?
1. jsonp: 动态创建script标签,通过src属性没有跨域的限制,将Ajax的接口地址赋值给src属性 在地址后面拼接上callback函数发送给后端,后端解析callback函数,并将数据拼接到 该函数的参数中返回给前端 2. cors原理 在响应里添加下面的 res.setHeader('Access-Control-Allow-Origin','http://127.0.0.1:3000'); //或者 res.setHeader('Access-Control-Allow-Origin','*');
-
原生JS的Ajax的封装步骤
1. 创建xhr对象,做兼容 2. 判断请求方式 GET POST 3. 监听请求状态,接受数据 4. 格式化参数
-
Ajax的状态码和服务器的状态码?
Ajax的状态码 0:请求未初始化(还没有调用 open())。 1:请求已经建立,但是还没有发送(还没有调用 send())。 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。 3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。 4:响应已完成;您可以获取并使用服务器的响应了。 服务器的状态码 1**:信息性的状态码 2**:成功的状态码 3**:重定向 4**:客户端错误 5**:服务器错误