day01
1、数组的基础:
1、构造函数创建数组:var arr=new Array(num);//创建了一个长度为num的空数组
2、按值传递:var a=x; var b=a;
如果传递的是原始类型,两者互不影响,因为是复制了一个副本给对方
如果传递的是引用类型,两者相互影响,因为是把自己的地址值给了对方 - 浅拷贝
3、释放一个引用类型,看清楚有多少个变量使用着他,全部都要释放后,才能释放干净 - 尽量的要封装为一个函数
2、hash(关联)数组:下标可以自定义的
1、创建:2步
1、创建一个空数组:var arr=[];
2、添加自定义下标并且赋值:arr["自定义下标"]=新值;
2、访问:arr["自定义下标"];
3、length失效了,永远为0!遍历不能用for循环,必须使用for in
for(var i in arr){
i;//自动得到每一个下标
arr[i];//每一个元素
}
3、数组的API:这些方法只有数组可以使用
1、arr to str:var str=arr.join("自定义连接符");
1、无缝拼接:var str=arr.join("");
2、拼接为页面元素:var str="<开始>"+arr.join("<结束><开始>")+"<结束>";
2、拼接数组:添加的元素的新方式
var newArr=arr.concat(新值1,...,arr2);
3、截取子数组:取出一部分来使用
var subArr=arr.slice(starti,endi+1);
4、删插替:var dels=arr.splice(starti,n,新值1,...);
day02
1、数组的API: 栈(一端封闭、另一端进出 - 优先使用最新的数据)和队列(一端进,另一端出 - 按照先来后到的顺序) 开头进:arr.unshift(新值1,...); 开头出:var first=arr.shift();
结尾进:arr.push(新值1,...);
结尾出:var last=arr.pop();
2、二维数组:
var arr=[[],[],[],[]];
访问:arr[行下标][列下标];
列下标越界,得到undefined
行下标越界,得到一个报错
遍历二维数组:
for(var r=0;r<arr.length;r++){
for(var c=0;c<arr[r].length;c++){
arr[r][c];//每一个元素
}
}
3、新的API: 判断:var bool=arr.every/some((val,i,arr)=>判断条件);
遍历:arr.forEach((val,i,arr)=>操作);
var newArr=arr.map((val,i,arr)=>操作);
过滤:var subArr=arr.filter((val,i,arr)=>判断条件);
汇总:var sum=arr.reduce((prev,val,i,arr)=>prev+val);
day03
String API:
1、转义字符:\
1、解决和程序冲突的字符
"\""
2、换行:\n 制表符:\t
3、书写unicode编码的文字:\uXXXX
2、大小写转换:var newStr=str.toUpper/LowerCase();
3、获取某个位置的字符:str.charAt(i) 还不如 str[i]
4、获取某个位置的字符的ascii码
var ascii=str.charCodeAt(i);
转会原文:
var 原文=String.fromCharCode(ascii);
5、检索字符串:判断有没有,数组也可以使用
var i=str/arr.indexOf("关键字",starti);
为不为-1,为-1说明没有,不为-1说明有
6、拼接字符串:var newStr=str.concat("新字符串",...) 还不如+运算
7、截取字符串:3个
var subStr=str/arr.slice(starti,endi+1);
.substring(starti,endi+1);//不支持负数参数
.substr(starti,n);//n代表截取的个数,不必考虑含头不含尾
8、替换字符串:
var newStr=str.replace("固定关键字","新内容");
9、切割字符串:arr<=>str
var arr=str.split("自定义切割符");
10、去掉空白字符:
var newStr=str.trim/trimStart/trimEnd();
扩展:创建元素的步骤:3步 1、创建空标签:var x=document.createElement("标签名");
day04
1、Math:数学对象,不需要创建,可以直接使用
1、属性:Math.PI
2、API:
1、取整:
上取整:Math.ceil(num) - 小数位数不能超过15位
下取整:Math.floor(num);
四舍五入:Math.round(num);
更推荐:
1、parseInt(str);
2、num.toFixed(d);//具有四舍五入的功能,并且小数位数自己规定,但是返回的是一个字符串,建议搭配parseFloat使用
2、乘方:Math.pow(底数,幂) ===> 底数**幂;
开平方:Math.sqrt(num);
3、最大值和最小值:
Math.max/min(一堆数字);
默认不支持数组比较:
解决:Math.max/min.apply(Math,arr);
4、绝对值:Math.abs(负数);
5、随机整数:parseInt(Math.random()*(max-min+1)+min);
2、Date:日期对象
1、创建:
1、获得当前时间:
var now=new Date();
2、自定义时间:
var date=new Date("yyyy/MM/dd hh:mm:ss");
var date=new Date(yyyy,MM-1,dd,hh,mm,ss);
3、复制日期:
var end=new Date(start);
2、操作:
1、两个日期之间可以相减,可以得到一个毫秒差,换算出我们想要的部分
2、API:FullYear、Month、Date、Day、Hours、Minutes、Seconds、MilliSeconds
每一个分量都有一对儿getXXX/setXXX,除了Day没有set操作
3、自己格式化
3、定时器:
周期性|一次性:
开启:timer=setInterval/Timeout(()=>{操作},间隔毫秒数);
停止:clearInterval/Timeout(timer);
timer保存的是定时器的序号,数字:0 1 2 3 4 5
day05
1、BOM:Browser Object Model - 浏览器对象模型,专门用于操作浏览器的,它的东西都不需要创建直接使用
2、window对象:
属性:
1、获取浏览器的完整的大小:outerWidth/Height;
2、*获取浏览器的文档显示区域的大小:innerWidth/Height;
3、屏幕大小:screen.width/height;
方法:
1、*打开窗口/链接:var newW=open("url网址","target/自定义","width=300,height=300,left=300,top=300");
2、关闭窗口:window/newW.close();
3、移动窗口的位置:newW.moveTo(新X,新Y);
4、修改窗口的大小:newW.resizeTo(新宽,新高);
5、*三种弹窗框:
1、警告框:alert();
2、输入框:prompt();
3、确认框:confirm();
6、*三种时间:
1、加载事件:onload
2、修改浏览器尺寸事件:onresize
3、***滚动事件:onscroll=function(){
1、获取滚动条当前的位置:this.scrollY;
2、获取xx元素距离页面顶部有多远:elem.offsetTop;
}
7、*****定时器
8、*****客户端的存储技术 - 本地存储:
webStorage:sessionStorage(会话级) 和 localStorage(本地级)
添加:xxxStorage.属性名="属性值";
获取:xxxStorage.属性名;
删除:xxxStorage.removeItem("属性名");
清空:xxxStorage.clear();