Array对象常用方法中:
不改变原数组:
1、 concat()
连接两个或多个数组
不改变原数组
返回被连接数组的一个副本
2、join()
把数组中所有元素放入一个字符串
不改变原数组
返回字符串
3、 slice()
从已有的数组中返回选定的元素
不改变原数组
返回一个新数组
4、 toString()
把数组转为字符串
不改变原数组
返回数组的字符串形式
改变原数组:
5、 pop()
删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
改变原数组
返回被删除的元素
6、 push()
向数组末尾添加一个或多个元素
改变原数组
返回新数组的长度
7、 reverse()
颠倒数组中元素的顺序
改变原数组
返回该数组
8、 shift()
把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
改变原数组
返回第一个元素的值
9、 sort()
对数组元素进行排序(ascii)
改变原数组
返回该数组
10、 splice()
从数组中添加/删除项目
改变原数组
返回被删除的元素组成的数组
11、 unshift()
向数组的开头添加一个或多个元素
改变原数组
返回新数组的长度
position: sticky :
以下代码,分别给节点 #box 增加如下样式,问节点 #box 距离 body 的上边距是多少?
<body style=”margin:0;padding:0”>
<div id=”box” style=”top:10px;margin:20px 10px;”>
</div>
</body>
如果设置 position: static ; 则上边距为 px
如果设置 position: relative ; 则上边距为 px
如果设置 position: absolute ; 则上边距为 px
如果设置 position: sticky ; 则滚动起来上边距为 px
position属性(sticky)
- position: static ; 则上边距为( 20 ) px 静态定位 top值无效
- position: relative ; 则上边距为( 30 ) px 移动的时候会包括margin
- position: absolute ; 则上边距为( 30 ) px 移动的时候会包括margin
- position: fixed ; 则上边距为( 30 ) px 固定定位的margin也会生效 移动的时候也会包括margin
- position: sticky ; 则上边距为( 20 ) px,页面滚动起来为(10)px,margin会无效;页面没滚动的时候是静态定位
HTTP 2.0 协议详解
https://blog.csdn.net/zqjflash/article/details/50179235
我们需要实现动态加载一个 JavaScript 资源,但是有几处不知道如何处理,需要您的帮助完成这一项工作
var script = document.createElement(“script”);
var head = document.getElementsByTagName(“head”)[0];
script.type = “text/javascript”;
script.src = “//i.alicdn.com/resource.js”;
// 绑定资源加载成功事件
// onreadystatechange
script.onreadystatechange = function( ){
// 判断资源加载状态是否为加载成功或加载完成
// /^(loaded|complete)$/
// readyState
if( /^(loaded|complete)$/.test (script.readyState ) ) {
script.onreadystatechange = null;
. . . .
}
};
// 绑定资源加载失败事件
// onerror
script.onerror = function( ) {
. . . .
};
head.insertBefore (script , head.firstChild)
script元素的onload,onreadystatechange事件
IE的 script 元素支持onreadystatechange事件,不支持onload事件。
FF的script 元素不支持onreadystatechange事件,只支持onload事件。
this.readyState的值为’loaded’或者’complete’都可以表示这个script已经加载完成.
如何结合IE和FF的区别?参考一下jquery的源码:
var script = document_createElement_x('script');
script.src="xx.js";
script.onload = script.onreadystatechange = function(){
if( ! this.readyState //这是FF的判断语句,因为ff下没有readyState这人值,IE的readyState肯定有值
|| this.readyState=='loaded' || this.readyState=='complete' // 这是IE的判断语句
){
alert('loaded');
}
};
script标签的defer属性和async属性
- defer 这个属性的用途是表明脚本在执行时不会影响页
面的构造。也就是说,相当于告诉浏览器立即下载,但延迟执行。脚本会被延迟到整个页面都解析完毕后再运行。支持HTML5 的实现会忽略给嵌入脚本设置的 defer 属性,HTML5 规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于 DOMContentLoaded 事件。 - async 异步脚本一定会在页面的 load 事件前执行,但可能会在 DOMContentLoaded 事件触发之前或之后执行。
defer和async在网络加载过程是一致的,都是异步执行的;
如果存在多个有defer属性的脚本,那么它们是按照加载顺序执行脚本的;而对于async,它的加载和执行是紧紧挨着的,无论声明顺序如何,只要加载完成就立刻执行,它对于应用脚本用处不大,因为它完全不考虑依赖。
DOMContentLoaded和load的区别
https://www.cnblogs.com/caizhenbo/p/6679478.html
https://www.cnblogs.com/gg-qq/p/11327972.html