JaveScript第二周知识点

82 阅读7分钟

JaveScript第二周知识点

第一天知识点

  1. 数组的基础:
    1. 创建数组:
      1. 直接量-var arr[值1,...];
      2. 构建函数:var arr=new Array(值1,...);
      3. 建议代码都封装成函数,函数中的一切变量都会自动释放
    2. hash数组: 如何使用:
      1. 创建:
        1. 创建空数组
        2. 为数组添加自定义下标并且赋值
      2. 访问元素:arr["自定义下标"];
      3. 强调:hash数组的length失效,永远为0.
      4. 遍历hash数组不能使用for循环,要用for in循环,然而for in不能称为是循环,因为不需要设置从哪开始到哪结束。--for (var i in数组名){i;数组名[i];}
      5. hash数组原理:
        1. hash算法:将字符串计算出一个尽量不重复的数字
        2. 添加元素:将自定义下标交给hash算法,得到一个数字
        3. 获取元素:将自定义下标交给hask算法,得到一个和当初保存时一样的数字
      6. js里一切都是对象,除了undefined和null,一切对象的底层都是hash数组
  2. 数组的API:
    1. arr转str:var str=arr.join;
    2. 数组的拼接:添加元素的新方式,将你传入的实参全部拼接到arr的末尾
    3. 截取子数组:根据你传入的开始下标截取到结束下标
    4. 删插替:
      1. 删除:var dels=arr.splice(starti,n);
      2. 插入:arr.splice(starti,0,新值,...);
      3. 替换:var dels=arr.splice(starti,n,新值,...);
    5. 翻转数组:arr。reverse();
    6. 数组排序:前一个元素和后一个元素进行对比,如果前一个大于后一个,两者就会交换位置,做完一轮后最大的数字回到最后,可以反复使用
    7. 栈和队列:添加元素和删除元素的新方式
      1. 栈:就是数值,一端封闭,只能从另一端进出
        1. 开头进:arr.unshift(新值,...);
        2. 开头出:var first=arr.shift();
        3. 结尾进:arr.push(新值,...);
        4. 结尾出:var last=arr.pop();
      2. 队列:就是数组,一端进,另一端出
        1. 开头进:arr.unshift(新值,...);
        2. 结尾出:var last=arr.pop();
        3. 结尾进:arr.push(新值,...);
        4. 开头出:var first=arr.shift();

第二天知识点

  1. 二维数组:数组的元素,又引用着另一个数组
    1. 创建:var arr=[["xx",x,xx]];
    2. 访问:arr[行下标][列下标];
    3. 列下标越界,返回undefined
    4. 行下标越界,得到是一个报错
    5. 遍历二维数组:必然两层循环,外层循环控制行,内层循环控制列
  2. ES5还提供了6个API:
    1. 判断:
      1. every:要求所有元素都满足条件才会为true,只要有一个不满足就为false
      2. some:要求只要有一个元素满足条件就会为true,所有元素都不满足则为false
    2. 遍历:拿到数组中的每个元素做相同或相似的操作,forEach--直接修改原数组
    3. 过滤:筛选出你需要的部分,但是和现实不一样的是原数组并不会发生变化,var.subArr=arr.filter(function(val,i,arr){return,判断条件;}
    4. 汇总:var result=arr.reduce(function(prev,val,i,arr){return prev+val;}基础值)
  3. 箭头函数:简化一切匿名回调函数
    1. 固定公式:function去掉,()和{}之间添加=>,如果形参只有一个,那么()可以省略
  4. string(字符串)的概念:
    1. 多个字符串组成的只读字符数组。
    2. 只读:所有的字符串的API都不会修改原字符串,都会返回一个新的字符
    3. 和数组的相同点:
      1. 字符串中的个数:str.length;
      2. 获取字符串中的某个字符:str[i];
      3. 遍历字符串
      4. 所有数组不修改原数组的API,字符串也可以使用(concatenate.slice)
    4. 和数组的不同点:所有数组的直接修改原数组的API,字符串都不可以使用,排序只有数组能做到,字符串也有很多属于自己的API
    5. 引用/对象类型:
      1. string Number Boolean--包装类型
      2. Array Function Date Math RegExp Error Obiect

第三天知识点

  1. stringAPI:就是一些只有字符串可以使用的函数,不需要我们创建,直接使用
    1. 转义字符:
      1. 将字符串中和程序冲突的字符转为原文:""" '''
      2. 包含特殊功能的符号:换行--\n 制表符--\t
      3. 输出unicode编码的字符:\u4e00 \u9fa5
    2. 大小写转换:将字符串中的每个字符统一转为大写,小写
    3. 获取字符串中指定位置的字符:str.charAt(i)==str[i]
    4. 获取字符串中指定位置的字符的ASCII码:var ascii=str.charcodeAt(i)
    5. 检索字符串:检查索引,检查下标,获取关键字的第一个字符的下标位置,starti可以省略,默认从0位置开始查找
    6. 拼接字符串:var newstr=str.concat("新字符串",....)还不如+运算
    7. 截取字符串:
      1. var substr=str/arr.slice(starti,emdi+1);
      2. str substring(starti,endi+1);
      3. str substr(starti,n);
    8. 替换字符:var newstr=str.replace("固定关键字"/正则表达式,"新内容");
    9. 切割/分割/分隔字符串:将字符串转为数组:var arr=str.split("自定义切割符");
    10. 去掉空白字符:str.trim/trimstart/trimEnd()

第四天知识点

  1. Math对象:专门提供了数学计算的API
    1. 强调:不需要创建,直接使用
    2. 属性:Math有一些属性,涉及到科学计数法,但是几乎用不到,只有Math.PI有可能做到
    3. API:
      1. 取整:
        1. 上取整:超过一点点,就取下一个整数 var num=Math.ceil(num);
        2. 下取整:无法超过多少,都会省略小数部分 var num=Math.floor(num);
        3. 四舍五入取整:var num=Math.round(num);
      2. 乘方和开方:
        1. 乘方:Math.Pow(底数幂);
        2. 开方:Math.sqrt(num);
      3. 最大值和最小值:var max/min=Math .max/min(a,b,c,d...);自动传入的数字中比较出最大值或最小值
      4. 绝对值:把负数转为正数:Math.abs(-1);
      5. 随机数:Math.random();在0-1之间取一个随机的小数
  2. Date对象:日期对象,提供了操作日期和时间的API
    1. 创建一个当前日期:var now=new Date();
    2. 创建一个自定义时间:var birth=new Date("");
    3. 创建一个自定义时间:var birth=new Date();
    4. 复制一个日期:日期的所有API都是直接修改原日期的,无法获得修改之前的日期所以,在执行API之前进行复制
    5. 使用:
      1. 两个日期对象之间,可以相减,得到一个毫秒差,换算出自己想要的任何一部分
      2. API:分量:时间的单位
    6. 特殊:
      1. 取值范围:
        1. FullyYear-当前年份的数字
        2. Month-0~11
        3. Date-1~31
        4. Day-0~6:0代表星期天
        5. Hours-0~23
        6. Minutes.Seconds-0~50
      2. Day,没有set方法
      3. 如果希望对某个分量进行加减操作:date.setxxx(date.getxxxx()+/-n)
      4. 格式化日期为本地字符串:date。toLocalestring();
  3. 定时器:
    1. 周期性定时器:每过一段时间就会执行一次,先等待后执行
      1. 开启:timer=setInterval(callback,间隔毫秒数);
      2. 停止:clearInterva(timer);
    2. 一次性定时器:等待一段时间,只会做一次
      1. 开启:timer=setTimeout(callback,间隔毫秒数);
      2. 停止:clearTimeout(timer);

第五天知识点

  1. BOM:Browser Object Model:浏览器对象模型专门用于操作浏览器的
  2. window对象:
    1. 全局对象:保存着全局变量和全局函数
    2. 指代当前窗口本身:
      1. 属性:获取浏览器的完整大小
      2. 获取浏览器的文档显示区域的大小
      3. 获取屏幕的完整大小
    3. 方法:
      1. 打开链接的方法

        1. 当前窗口打开,可以后退
        2. 当前窗口打开,禁止后退
        3. 新窗口打开,可以打开多个
        4. 新窗口打开,只能打开一个
      2. 打开新窗口/新连接:newW=open("url",...)

      3. 关闭窗口:window/newW.close();

      4. 改变新窗口的大小:newW.resizeTo(新宽,新高);

      5. 改变新窗口的位置:newW.moveTo(新x,新y);

      6. window提供了三个框

        1. 警告框:alert("警告文字");
        2. 输入框:var user=prompt("提示文字");
        3. 确认框: var bool=confirm("提示文字");
      7. 定时器也是window的