10.js知识学习①

62 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

1.es6常量:

常量的含义是指向的对象没办法更改,但是可以更改对象内部的属性。

 const obj={

    nam:'ass'

 }

 obj.name='sss'(这样可以)

变量增强写法:

 const name='aaa'

 const  age=12

 const  obj={

   name,age

 }

 (和 var   obj={name:'aaa',age:12} 一样)

函数增强写法:

 const  obj={

   run(){}

 }

(和 var obj={run:function(){} } 一样)

2.可变参数:

 function  sum(...num){

    console.log(num)一个数组,显示了所有参数。



    argumentsfunction 自带的参数,也是一个数组,显示的传入所有参数。

  }

 sum(1,2,3,4,5,6,7,8)

3.高阶函数:

  map(n=>{})//:对数组所有值进行操作改变。

  filter(n=>{})//:过滤,判断数组中哪些需要的重新传入新数组。(回调函数必须传回 true或false   filter(n=>{ return  n>0 (即 return true 或 false)  }))



  reduce((preValue,n)=>{},0)//:对数组进行汇总。(两个参数,第一个是一个回调函数,第二个是一个初始默认值。   preValue是上一次计算得到的值,n是数组当前的循环的值。)

  //如需累加reduce((preValue,n)=>{return preValue + n},0)

4.事件委托:

<div id="box">

     <input type="button" id="add" value="添加" />

     <input type="button" id="remove" value="删除" />

     <input type="button" id="move" value="移动" />

     <input type="button" id="select" value="选择" />

 </div>

 window.onload = function(){

         var oBox = document.getElementById("box");

         oBox.onclick = function (ev) {

             var ev = ev || window.event;

             var target = ev.target || ev.srcElement;

             if(target.nodeName.toLocaleLowerCase() == 'input'){

                 switch(target.id){

                     case 'add' :

                         alert('添加');

                         break;

                     case 'remove' :

                         alert('删除');

                         break;

                     case 'move' :

                         alert('移动');

                         break;

                     case 'select' :

                         alert('选择');

                         break;

                 }

             }

         }

     }
在同一个父级元素中,几个相同的div或标签,需要n个事件,这是运用它父级的事件,判断返回事件的目标节点,我们成为事件源,并执行事件,这样可以优化性能.

原理:每个函数都是一个对象,是对象就会占用内存,对象越多,内存占用率就越大,自然性能就越差了(内存不够用,是硬伤,哈哈),比如上面的100li,就要占用100个内存空间,如果是1000个,10000个呢,那只能说呵呵了,如果用事件委托,那么我们就可以只对它的父级(如果只有一个父级)这一个对象进行操作,这样我们就需要一个内存空间就够了,是不是省了很多,自然性能就会更好。

  1. DOM操作——怎样添加、移除、移动、复制、创建和查找节点

(1)创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

(2)添加、移除、替换、插入、复制、移动

appendChild()

removeChild()

replaceChild()

insertBefore() //在已有的子节点前插入一个新的子节点

obj.cloneNode(deep) //deep:该参数是一个Boolean值,表示是否为深度复制。深度复制是将当前节点的所有子节点全部复制,当值为true时表示深度复制。当值为false时表示简单复制,简单复制只复制当前节点,不复制其子节点。

复制原DOM,添加到新的位置,删除原DOM

(3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)

getElementById() //通过元素Id,唯一性