第三周第五天笔记

  • 对象属性名为变量时,不能用".",要用"[ ]",但是不能加双引号;
  • 基本数据类型是对键值对的引用,引用数据类型是对地址的引用;
    • 基本数据类型,对值的引用:
          var a=123;
          var b=a;
          b+=3;
          console.log(a);
          console.log(b);*/
        //打印出来的值中,a为123;b为126;
      
    • 引用数据类型,是对地址的引用:
          var a=[1,2,3,4]
          var b=a;
          b[4]=5;
          console.log(a);
          console.log(b);
          //打印出来的a为[1,2,3,4,5],b也为[1,2,3,4,5],
          // b引用的地址与a的地址为同一个地址,当改变b中的元素时,a也会改变;
      
    • 普通对象的遍历:for-in
       var a={ name:"guobin",age:26,sex:"男"};
          var b={};
          for( var attr in a){
              b[attr]=a[attr];//对象的克隆;
          }
          b.insert="meihao";//给b添加自定义属性;
          console.log(a);
          console.log(b);
          //打印出来的结果:a={name: "guobin", age: 26, sex: "男"};
          //b={name: "guobin", age: 26, sex: "男", insert: "meihao"};
      
  • 数组常用的方法:
    • 学习思路,需要关注4点:
      1. 方法的作用;
      2. 是否需要参数;
      3. 是否有返回值,返回值内容;
      4. 原来数组是否改变;
    • 第一组:数组元素的增加,删除,替换——原来数组会发生变化;
      • push()
        • 作用:给数组末尾增加一项;
        • 参数:需要实参,为增加项的内容;内容为元素,不是数组;
        • 返回值:新数组的长度;
        • 原来数组发生改变;
      • pop()
        • 作用:删除数组最后一项;
        • 参数:不需要;
        • 返回值:删除项的内容;
        • 原来数组发生改变;
      • unshift()
        • 作用:给数组开头添加一项;
        • 参数:需要实参,为增加项的内容;内容为元素,不是数组;
        • 返回值:新数组的长度;
        • 原来数组发生改变;
      • shift()
        • 作用:删除数组第一项;
        • 参数:不需要;
        • 返回值:删除项的内容;
        • 原来数组发生改变;
      • splice():删除,插入,替换
        • 语法:splice(index,deleteCount,替换的内容);
        • index:从数组中开始的索引值;(若参数中只添加index值,则从index值开始,后面的元素全部删除)
        • deleteCount: 删除元素的个数;(不可省略,若省略则为添加的内容不能插入,除了只有index的情况)
        • 替换的内容:可省略,即无添加内容;
        • 返回值:删除的元素重新构成的数组;若没有删除内容,则返回空数组;
        • 原来的数组会发生变化;
        • 三种形式代码:
          • 插入:arr.splice(2,0,"neirong");//删除个数不能省略,省略后,插入失效,在制定位置的插入;
          • 删除:arr.splice(2,3);//当删除个数省略时,从2开始,删除3个后面的元素;
          • 替换:arr.splice(2,2,"neirong1","neirong2");//替换的个数与删除的个数可以不相等;
        • 实例:克隆一份给变量
          var arr1=["mei","hao","de","yi","tian","a"]
          //需求:克隆一份arr1给arr2,不考虑arr1是否改变
          var arr2=arr.splice(0);
         //运行的结果中,arr1为空数组,arr2内容与arr1原来相同;
        
    • 第二组:截取/查找、拼接、克隆——原来数组不会发生变化;
      • slice(m,n)
        • 作用:截取,克隆
        • 参数:m,n-从索引m开始,查找到索引n结束,包前(m代表的元素)不包后(n代表的元素);
          • m:start,开始查找的索引值;正负整数,当为-1时,即倒数第一个元素
          • n:end,结束查找的索引值,正负整数,可省略,当省略时,即从开始一直到末尾;
        • 返回值:被选取的数组元素构成的新数组;
        • 原来数组不发生改变;
        • 实例:请查找到[m,n]项:即找到m到n项
             var ree=arr.slice(m-1,n);//第m项对应的索引值为m-1
          
        • 功能:克隆数组
             var rew=arr.slice(0);//或arr.slice()
          
      • concat()
        • 作用:数组拼接,克隆
        • 参数:
          • 数组名,多个数组之间用逗号相连
          • 数组元素,起到添加元素的功能,即arr.concat(["mei","hao"]);注:元素可以不是数组,可以是数字,即concat([1,2,3],[2])与concat([1,2,3],2)结果是一样的;
        • 返回值:拼接成的新数组;
        • 原数组不发生改变;
        • 功能:克隆
             var rew=arr.concat();//不填加参数,即达到克隆的效果;
        
    • 第三组:数组转字符串——原来数组不会发生变化;
      • toString()
        • 作用:数组转字符串;
        • 参数:无;
        • 返回值:以逗号连接每个数组元素构成的字符串;
        • 原数组没有发生改变;
          var arr=[1,2,3,4,5,6];
          var str=arr.toString();
          console.log(str);//打印的结果是"1,2,3,4,5,6"—其中","为一个字符;
        
      • join()
        • 作用:以特定符号连接数组元素形成新的字符串;
        • 参数:任意符号,用于连接数组元素;
        • 返回值:以制定符号拼接数组元素形成的字符串;
        • 原数组没有发生改变;
        • eval():把字符串作为JS代码来执行;
          • 实例1:如果参数设置为运算符号,将字符串实现运算
             var arr=[1,2,3,4,5,6];
             var str=arr.join("+");
             console.log(str);//打印的结果是"1+2+3+4+5+6"—其中"+"为一个字符;
             var sum=eval(str);//sum值为加法运算求和值;
          
          • 实例2:字符串str1="alert(123)",通过eval()使字符串转化为JS代码执行;
             var str1="alert(123)";
             eval(strl);//页面弹出123;
          
    • 第四组:数组的翻转和排序——原来数组会发生变化;
      • reverse():翻转
        • 功能:数组元素倒着写出来;
        • 参数:没有;
        • 返回值:返回一个跟原来被翻转后的数组一样的数组;
        • 原数组发生改变;
      • sort():排序
        • 功能:数组元素排序;
        • 参数:函数;
        • 返回值:返回一个跟原来被排序后的数组一样的数组;
        • 原数组发生改变;
       ary.sort(function(a,b){
             return a-b;//升序:从小到大排列;
             return b-a;//降序:从大到小排列;
             });
      
    • 第五组:数组常用但不兼容的方法:
      • indexOf()
        • 功能:查找特定的元素内容;
        • 参数:要查找的内容;
        • 返回值:如果找到,则返回内容对应的索引值/位置;如果没找到,返回-1;
        • 原数组没有发生变化;
      • forEach()
        • forEach()用来遍历数组;
        • forEach()有两个参数:1)callback回调函数;2)context:用来改变this指向;
          • 回调函数中有三个参数:1)数组的对应的内容;2)索引;3)原数组
          • context是用来改变this指向的,可传可不传,如果不传的话,默认this是window;如果传了按传的来;
        • 返回值:undefined; 没有返回值;
        • 原数组不发生变化;
        var arr=["mei","hao","de","yi","tian","a"];
        var objm={};
        arr.forEach(function (item,index,input) {
            console.log(this);
        },objm);
        
      • map():也是遍历数组,跟forEach()功能一样,只是forEach()没有返回值,map有返回值;
  • 实例:验证码的获取代码:获取四个不重复的代码;
<script>
    var str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    var arr=[];
    //思路1:利用while循环进行判断
    while(arr.length<4){
        var rnd=Math.round(Math.random()*61);//获取0到61之间随机数
        if(arr.indexOf(str[rnd])===-1){//查找数组中的是否已经存在该元素,若没有则输出-1;
            arr.push(str[rnd]);
        }
    }
    //思路2:利用for循环进行判断
    for(var i=0; i<4; i++){
        var rnd=Math.round(Math.random()*61);//获取0到61之间随机数
        if(arr.indexOf(str[rnd])===-1) {//查找数组中的是否已经存在该元素,若没有则输出-1;
            arr.push(str[rnd]);
        }else{
            i--;//如果数组中已经存在元素了,就必须重新再进行循环,通过i-1来保证循环拿到的元素个数;
        }
    }
</script>
  • 随机数的获取: 获取[n,m]的随机数代码:var rnd=Math.round(Math.random()*(m-n)+n);;
<script>
    var rnd=Math.round(Math.random()*61);//获得0-61之间的随机数代码
</script>
  • 封装步骤:
    1. 把除了父容器以外的函数,都剪切,放到一个新的函数中,并起个名字;
    2. 把函数中可变的部分,作为形参;
    3. 在外面调用函数,并传入实参;
    4. 把html部分,复制多份,对待宽度不同的个别部分,分别设置;
    5. 获取所有的父容器,逐个遍历后,调用函数;
<body>
    <div class="wrap" style="width:803px;">....</div>
    <div class="wrap">....</div>
    <div class="wrap" style="width:401px;">....</div>
<script>
    var oawrap=document.getElementsByClassName("wrap");
    for(var i=0; i<oawrap.length; i++){
        tab(oawrap[i]);//调用函数,添加实参
    }
    function tab(ioawrap) {
        var oli=ioawrap.getElementsByTagName("li");
        var odiv=ioawrap.getElementsByTagName("div");
        for(var i=0;i<oli.length; i++){
            oli[i].index=i;
            oli[i].onclick=function () {
                for(i=0;i<oli.length; i++){
                    oli[i].className= "";
                    odiv[i].className="hide";
                }
                this.className="active";
                odiv[this.index].className="show";
            }
        }
    }
</script>
</body>
  • 知识点掌握:
    • 数据类型及区别;
    • 九九乘法表
    • 选项卡两种思路:自定义属性,函数闭包;
    • 求和函数:实参个数不确定下的求和函数(arguments);
    • 数组的常用方法:14种;
    • 随机验证码:两种思路:for循环和while循环;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,437评论 0 13
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,465评论 0 21
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 880评论 0 0
  • 最近一直忙 和开发新品 有所累 难寻时间收拾心情 并问初衷 夜深赋诗一首以偿 并共勉: 吾本徽州石敢当 生性如山竹...
    啸傲天涯_阿思蓝阅读 317评论 2 4
  • 嘭~。门开了,朔风裹夹着霜雪前仆后继的涌向小屋。一并带来的还有一路的浓烈风尘气息。“阁下哪里来?” 沙哑的声音伴随...
    袁氏小主阅读 459评论 2 2

友情链接更多精彩内容