第一:

ES5,ES6新特性

1.保护对象的成员:

1.四大特性: 

1.value:"值"  //真正保存值的地方

2.writeable:true  or  flase  // 一个开关,用来判断是否可以被修改

3.enumerable: true  or  flase  // 一个开关,判断是否可以遍历;

4.configurable:true  or  flase  // 一个开关,判断是否可被删除;

2.修改四大特性:oblect. definedprototype{obj,{ "属性名":{四大特性的操作} }}

3.三个级别:用来简化四大特性的操作

1.防扩展(即防止添加):object. preventExtensions(xx) ;xx某一个对象

2.密封(即防止添加和删除):object.sea(xx) ;xx某一个对象

1.防扩展(即防止添加,删除,修改):object. freeze(xx) ;xx某一个对象

 2.ES6的新API:

1.判断API   every:每一个都满足条件,则为true,否则为false,类似于&&

arr.every( function (val,i,arr) {  return 判断条件 }),val是数组的值,i是下标,arr是数组本身

2.判断API:some :全部都不满足为false,其他为true,类似于||;

arr.some (function (val,i,arr){  return  判断条件  } )

3.遍历数组新API:forEach;map

arr.forEach(function (val,i,arr) { 数组的操作 }  );forEach直接修改原数组;

let newarr = arr. map(function(val,i,arr){ return操作 });map不修改原数组,返回一个新数组;

4.过滤和汇总:到不修改原数组,返回新数组

1.过滤:let newarr=arr. filter(function (val,i.arr){ return 条件})

2.汇总:let newarr = arr. reduce(function (prev,val, i ,arr){  return prev+sum;  },基础值);

3.根据对象创建子对象:

1.object. create():根据父对象创建子对象,继承性已确定

let child= object. create(baba.{

"自有属性":{四大特性的类容}

})

 

4.call/apply/bind:

1.call/apply:临时替换了函数中的this的指向

函数名.call(借用的对象,实参1,.....)

函数名.apply(借用的对象,[传入实参1,.....]) - apply会打散传入的数组

2. bind:永久替换了函数中的this的指向

         1.创建了一个和原函数完全相同的新函数
         2.将新函数中的this永久绑定为了指定对象 - 不能再被改变
         3.将新函数中的部分参数提前永久固定
        语法:var 新函数=函数名.bind(指定对象,永久实参,...); - 不是立刻执行,需要自己调用
        特殊点:bind绑定的新函数无法被call/apply借走

使用场景:

1、Math.max/min.apply(Math,arr)
2、Object.prototype.toString.call/apply(x);
3、将类数组转为普通数组(API非常多):

5、严格模式:
开启:"use strict";    //写在任何一个作用域的顶部都可以
作用:1、禁止给未声明的变量赋值
           2、将静默失败升级为了错误

6.*模板字符串:简化字符串拼接的操作
    `名字叫${name}`

7.*块级作用域:
     可用 let 变量名=值
           1、禁止声明提前
           2、添加了块级作用域,一个{}就是一个块
           3、记录着鼠标初发事件的元素的下标
8.箭头函数:简化回调函数
        简化:function省略,在()和{}之间添加=>,如果形参只有一个()省略,如果函数体只有一句话,省略{};如果函数体只有一句话并且是return,那么省略{}和return

事件不要简化为箭头函数,this指向是window;

第二:Dom

Dom分为:核心Dom;HTMLDom;XMLDom

1.dom节点的三大属性:

1.xx. node. type:获取节点类型,返回一个数字;卵的

2.xx. nodevalue;获取节点的值;

3.xx. nodeName; 获取节点的名称,用来判断是什么标签

2.递归:函数中再次调用了函数自己;在层级不确定的时候使用

function  函数名(){ 最开始的操作

判断有没有下一级,下一级和上一级的是一样的;有的话再次调用函数;

}

3.查找元素新方式:

1.let elms=document.queryselector("任何css选择器");//找到的是单个元素;匹配一个元素

2.let elms=document.queryselectorAll("css选择器");

4.dom之删除属性的方法:

1.elsms. removeAttribute("属性名");//核心dom操作方法

2.elms. 属性名=" "; //html 简化方法;删除得不干净;

5.创建元素的方式:

1.创建元素:let elms= document. createElement("标签名");

2.设置元素的必要属性:elms. 属性名="属性值";或者绑定事件

3.渲染dom树:父亲.appendchild(elms);父亲.insertBefore(elms);父亲.replacechild(elms);

6.删除元素的方法:xx.remove()

7.htmlDom:

1.imges图片对象:let img= new image();

2.form对象:简化form表单的控件

1.查找form:let forms=document.forms[ i ];

2.查找form元素:input:forms.elements[ i ]

3.form专属提交事件:form. onsubmit=function(){ 提交事件  //阻止提交 return FALSE }

3.select对象:

1.属性:select. options:查找select下面的option标签;等同于select. childrens;

2.select.selectedIndex:获取当前选择的option的下标;

3.select.add(option):添加option

4.select.remove(i);删除选中项为i的下标元素;

5.select专属事件:select.onchange=function(){  状态发生改变的事件  };

4.option对象:

1.let opts=new option("innerHTML","value");

2.搭配select对象使用:select.add(opts);快速生成并渲染到select中;

第三:Bom

BOM对象:window对象,history历史对象,location跳转对象,screen屏幕对象,navigator浏览器信息对象,event事件对象

1.window对象:

1.网页打开的新方式:除了a标签,window的open方法:open("url路径地址","打开方式");

打开方式有

_self:当前页打开;可后退

_blank:新窗口打开;可打开多个

"自定义属性":新窗口只能打开一个

location.replace("网址");刷新当前页面,且不可后退

2.window属性:

1.获取浏览器的完整大小:outerwidth,outerheight;

2.获取body(文档显示区域)的大小:innerwidth,innerheight;

3.获取屏幕的大小:screen.width,screen.height;

2.window对象之定时器:

1.周期性定时器:间断的执行某操作,列如轮播等

1.开启:timer=setinterval(()=>{

执行操作

},间隔毫秒数);

2.关闭定时器:clearinterval(timer)

2.一次性定时器:

1.开启:timer=setTimeout(()=>{ 操作 },毫秒数)

2.停止:clearTimeout(timer);