一、indexOf和includes方法
1.indexOf
indexOf() 方法可返回数组中某个指定的元素位置。该方法从头到尾的检索数组,查看是否有符合要求的元素,并返回该元素的位置。indexOf有两个参数,第一个参数是查询的元素,第二个参数是从哪开始查询的位置,也可不填默认则为从头开始找。开始位置的索引为 0,没找到指定元素则返回 -1。
Array.prototype.myIndexOf = function (item,start) {
let arr=this
if(start>=this.length) return -1
else if (start < 0) {
start = start + this.length < 0 ? 0 : start + this.length;
}
for (let i = start; i < this.length; i++) {
if (this[i] === item) return i;
}
//如果没有找到就返回-1,找到返回i
return -1
}
2.includes
用于判断元素是否存在,includes返回的是布尔类型,如果查找到元素,返回true,否则返回false。includes可以判断数组中是否存在NaN,但是indexOf不可以。
二、for in与for of
1.for in是遍历(object)键名,也就是用来遍历数组或者对象的属性,但是他只会循环遍历我们自定义的属性,原型上默认的属性不会遍历出来
2.for of是遍历(array)键值,遍历时获得其中的每一项(属性值),常用
补充:Object.hasOwnProperty(prop) 用来判断某个对象是否含有指定的属性的,返回值为Boolean
三、
1.Object.keys()的用法
遍历对象并返回对象中每一项key的数组,也可以结合forEach来使用,Object.keys(obj).forEach((e,i) => {})
2.Object.values()的用法
Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
3.Object.assgin()的用法
可见下篇文章
四:get/post
get 请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存。
post 不同,post 做的一般是修改和删除的工作,所以必须与数据库交互,所以不能使用缓存。
因此 get 请求适合于请求缓存。缓存一般只适用于那些不会更新服务端数据的请求。一般 get 请求都是查找请求,不会对服务器资源数据造成修改,而 post 请求一般都会对服务器数据造成修改,所以,一般会对 get 请求进行缓存,很少会对 post 请求进行缓存。
五:锚点
1.#
#代表网页中的一个位置,作为页面定位符出现在URL中。其右面的字符,就是该位置的标识符。
2.HTTP请求不包括#
#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。
3.#后的字符
在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。
4. 改变井号后面的参数不会触发页面的重新加载但是会留下一个历史记录
仅改变井号后面的内容,只会使浏览器滚动到相应的位置,并不会重现加载页面。但是此操作会在浏览器的历史记录中添加一次记录,即你可以通过返回按钮回到上次的位置。这个特性对Ajax来说特别的有用,可以通过设置不同井号值,来表示不同的访问状态,并返回不同的内容给用户。比如说一个列表的用户,需要进行编辑时,可以设置锚点相应的跳转操作
5.可以通过javascript使用window.location.hash来改变井号后面的值
仅改变井号后面的内容,只会使浏览器滚动到相应的位置,并不会重现加载页面。(从新加载页面跟c重新渲染页面不是一回事,从新加载页面是要跳转一下的,或者说刷新一下页面;从新渲染页面是渲染那个模板还在本页面不会有跳转或者说刷新的现象出现 )hash最好只在同一个页面内使用。
在写项目中,可能涉及到的知识点,就随手翻阅资料整理了一下,内容大部分来源于网络,还是前端小白,多多指教