JaveScript第二周知识点
第一天知识点
- 数组的基础:
- 创建数组:
- 直接量-var arr[值1,...];
- 构建函数:var arr=new Array(值1,...);
- 建议代码都封装成函数,函数中的一切变量都会自动释放
- hash数组:
如何使用:
- 创建:
- 创建空数组
- 为数组添加自定义下标并且赋值
- 访问元素:arr["自定义下标"];
- 强调:hash数组的length失效,永远为0.
- 遍历hash数组不能使用for循环,要用for in循环,然而for in不能称为是循环,因为不需要设置从哪开始到哪结束。--for (var i in数组名){i;数组名[i];}
- hash数组原理:
- hash算法:将字符串计算出一个尽量不重复的数字
- 添加元素:将自定义下标交给hash算法,得到一个数字
- 获取元素:将自定义下标交给hask算法,得到一个和当初保存时一样的数字
- js里一切都是对象,除了undefined和null,一切对象的底层都是hash数组
- 创建:
- 创建数组:
- 数组的API:
- arr转str:var str=arr.join;
- 数组的拼接:添加元素的新方式,将你传入的实参全部拼接到arr的末尾
- 截取子数组:根据你传入的开始下标截取到结束下标
- 删插替:
- 删除:var dels=arr.splice(starti,n);
- 插入:arr.splice(starti,0,新值,...);
- 替换:var dels=arr.splice(starti,n,新值,...);
- 翻转数组:arr。reverse();
- 数组排序:前一个元素和后一个元素进行对比,如果前一个大于后一个,两者就会交换位置,做完一轮后最大的数字回到最后,可以反复使用
- 栈和队列:添加元素和删除元素的新方式
- 栈:就是数值,一端封闭,只能从另一端进出
- 开头进:arr.unshift(新值,...);
- 开头出:var first=arr.shift();
- 结尾进:arr.push(新值,...);
- 结尾出:var last=arr.pop();
- 队列:就是数组,一端进,另一端出
- 开头进:arr.unshift(新值,...);
- 结尾出:var last=arr.pop();
- 结尾进:arr.push(新值,...);
- 开头出:var first=arr.shift();
- 栈:就是数值,一端封闭,只能从另一端进出
第二天知识点
- 二维数组:数组的元素,又引用着另一个数组
- 创建:var arr=[["xx",x,xx]];
- 访问:arr[行下标][列下标];
- 列下标越界,返回undefined
- 行下标越界,得到是一个报错
- 遍历二维数组:必然两层循环,外层循环控制行,内层循环控制列
- ES5还提供了6个API:
- 判断:
- every:要求所有元素都满足条件才会为true,只要有一个不满足就为false
- some:要求只要有一个元素满足条件就会为true,所有元素都不满足则为false
- 遍历:拿到数组中的每个元素做相同或相似的操作,forEach--直接修改原数组
- 过滤:筛选出你需要的部分,但是和现实不一样的是原数组并不会发生变化,var.subArr=arr.filter(function(val,i,arr){return,判断条件;}
- 汇总:var result=arr.reduce(function(prev,val,i,arr){return prev+val;}基础值)
- 判断:
- 箭头函数:简化一切匿名回调函数
- 固定公式:function去掉,()和{}之间添加=>,如果形参只有一个,那么()可以省略
- string(字符串)的概念:
- 多个字符串组成的只读字符数组。
- 只读:所有的字符串的API都不会修改原字符串,都会返回一个新的字符
- 和数组的相同点:
- 字符串中的个数:str.length;
- 获取字符串中的某个字符:str[i];
- 遍历字符串
- 所有数组不修改原数组的API,字符串也可以使用(concatenate.slice)
- 和数组的不同点:所有数组的直接修改原数组的API,字符串都不可以使用,排序只有数组能做到,字符串也有很多属于自己的API
- 引用/对象类型:
- string Number Boolean--包装类型
- Array Function Date Math RegExp Error Obiect
第三天知识点
- stringAPI:就是一些只有字符串可以使用的函数,不需要我们创建,直接使用
- 转义字符:
- 将字符串中和程序冲突的字符转为原文:""" '''
- 包含特殊功能的符号:换行--\n 制表符--\t
- 输出unicode编码的字符:\u4e00 \u9fa5
- 大小写转换:将字符串中的每个字符统一转为大写,小写
- 获取字符串中指定位置的字符:str.charAt(i)==str[i]
- 获取字符串中指定位置的字符的ASCII码:var ascii=str.charcodeAt(i)
- 检索字符串:检查索引,检查下标,获取关键字的第一个字符的下标位置,starti可以省略,默认从0位置开始查找
- 拼接字符串:var newstr=str.concat("新字符串",....)还不如+运算
- 截取字符串:
- var substr=str/arr.slice(starti,emdi+1);
- str substring(starti,endi+1);
- str substr(starti,n);
- 替换字符:var newstr=str.replace("固定关键字"/正则表达式,"新内容");
- 切割/分割/分隔字符串:将字符串转为数组:var arr=str.split("自定义切割符");
- 去掉空白字符:str.trim/trimstart/trimEnd()
- 转义字符:
第四天知识点
- Math对象:专门提供了数学计算的API
- 强调:不需要创建,直接使用
- 属性:Math有一些属性,涉及到科学计数法,但是几乎用不到,只有Math.PI有可能做到
- API:
- 取整:
- 上取整:超过一点点,就取下一个整数 var num=Math.ceil(num);
- 下取整:无法超过多少,都会省略小数部分 var num=Math.floor(num);
- 四舍五入取整:var num=Math.round(num);
- 乘方和开方:
- 乘方:Math.Pow(底数幂);
- 开方:Math.sqrt(num);
- 最大值和最小值:var max/min=Math .max/min(a,b,c,d...);自动传入的数字中比较出最大值或最小值
- 绝对值:把负数转为正数:Math.abs(-1);
- 随机数:Math.random();在0-1之间取一个随机的小数
- 取整:
- Date对象:日期对象,提供了操作日期和时间的API
- 创建一个当前日期:var now=new Date();
- 创建一个自定义时间:var birth=new Date("");
- 创建一个自定义时间:var birth=new Date();
- 复制一个日期:日期的所有API都是直接修改原日期的,无法获得修改之前的日期所以,在执行API之前进行复制
- 使用:
- 两个日期对象之间,可以相减,得到一个毫秒差,换算出自己想要的任何一部分
- API:分量:时间的单位
- 特殊:
- 取值范围:
- FullyYear-当前年份的数字
- Month-0~11
- Date-1~31
- Day-0~6:0代表星期天
- Hours-0~23
- Minutes.Seconds-0~50
- Day,没有set方法
- 如果希望对某个分量进行加减操作:date.setxxx(date.getxxxx()+/-n)
- 格式化日期为本地字符串:date。toLocalestring();
- 取值范围:
- 定时器:
- 周期性定时器:每过一段时间就会执行一次,先等待后执行
- 开启:timer=setInterval(callback,间隔毫秒数);
- 停止:clearInterva(timer);
- 一次性定时器:等待一段时间,只会做一次
- 开启:timer=setTimeout(callback,间隔毫秒数);
- 停止:clearTimeout(timer);
- 周期性定时器:每过一段时间就会执行一次,先等待后执行
第五天知识点
- BOM:Browser Object Model:浏览器对象模型专门用于操作浏览器的
- window对象:
- 全局对象:保存着全局变量和全局函数
- 指代当前窗口本身:
- 属性:获取浏览器的完整大小
- 获取浏览器的文档显示区域的大小
- 获取屏幕的完整大小
- 方法:
-
打开链接的方法
- 当前窗口打开,可以后退
- 当前窗口打开,禁止后退
- 新窗口打开,可以打开多个
- 新窗口打开,只能打开一个
-
打开新窗口/新连接:newW=open("url",...)
-
关闭窗口:window/newW.close();
-
改变新窗口的大小:newW.resizeTo(新宽,新高);
-
改变新窗口的位置:newW.moveTo(新x,新y);
-
window提供了三个框
- 警告框:alert("警告文字");
- 输入框:var user=prompt("提示文字");
- 确认框: var bool=confirm("提示文字");
-
定时器也是window的
-