• JS膏集04


    JS膏集04

    1、apply和call方法
    可以改变this的指向,可以用于函数的调用
    apply和call方法中如果没有传入参数,或者传入null,那么调用该方法的函数中的this就是window
    函数名(thisArgs,数组);
    函数名(thisArgs,args);

    function f1(x,y){
    console(x+y)
    }
    f1(10,20);//等价于
    f1.apply(null,[10,20]);
    f1.call(null,10,20);
    

    apply和call都可以让函数或者方法来调用,传入参数和 函数自己调用的写法不一样,但效果是一样的。
    window.f1.apply(obj.[10,20]);
    apply和call将改变this的指向(obj)

    在方法中改变this的指向
    在这里插入图片描述
    在这里插入图片描述
    Function.prototype即为f(){native code。call和apply在其中存在

    2、bind方法
    函数名.bind();//将复制一份调用的函数,复制的同时可以传参
    .bind(对象,参数1,参数2…)
    在复制后再自行传参即可。复制后再自行调用
    与apply和call同理,也会改变this指向。
    在这里插入图片描述
    bind的使用:通过对象调用方法,产生随机数
    在这里插入图片描述
    调用方法可以不停地产生随机数
    在这里插入图片描述

    3、函数中的成员介绍
    .name:函数的名称,不可修改
    .arguments:.length实参的个数
    .length:形参的个数
    .caller:返回函数的调用者

    4、函数作为参数
    在这里插入图片描述
    函数作为参数后若在函数名后带有括号,则意味着是函数的返回值来作为函数的参数

    5、
    在这里插入图片描述
    6、函数作为返回值使用
    在这里插入图片描述
    console.log(Object.prototype.toString)
    将输出Object的数据类型[object Object]
    数组的数据类型,借助call [object Array]
    Object.prototype.toString.call(数组名)
    在这里插入图片描述
    在这里插入图片描述

    7、函数作为参数使用
    在这里插入图片描述
    在这里插入图片描述
    案例:为3个电影排序
    在这里插入图片描述
    在这里插入图片描述
    8、作用域,作用域链及预解析
    在这里插入图片描述
    在这里插入图片描述
    函数预解析将把它的内容一并解析完成

    9、闭包

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    结果均为11
    在这里插入图片描述
    依次为11,12,13

    闭包案例产生相同的随机数
    在这里插入图片描述
    在这里插入图片描述

    //闭包案例实现点赞
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>对自己狠点</title>
      <style>
        ul {
          list-style-type: none;
        }
    
        li {
          float: left;
          margin-left: 10px;
        }
    
        img {
           200px;
          height: 180px;
        }
    
        input {
          margin-left: 30%;
        }
      </style>
      <script>
        //$永远都是24k纯帅的十八岁的杨哥$
      </script>
    </head>
    <body>
    <ul>
      <li><img src="images/ly.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
      <li><img src="images/lyml.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
      <li><img src="images/fj.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
      <li><img src="images/bd.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
    </ul>
    <script>
    
      //获取所有的按钮
      //根据标签名字获取元素
      function my$(tagName) {
        return document.getElementsByTagName(tagName);
      }
      //闭包缓存数据
      function getValue() {
        var value=2;
        return function () {
          //每一次点击的时候,都应该改变当前点击按钮的value值
          this.value="赞("+(value++)+")";
        }
      }
      //获取所有的按钮
      var btnObjs=my$("input");
      //循环遍历每个按钮,注册点击事件
      for(var i=0;i<btnObjs.length;i++){
        //注册事件
        btnObjs[i].onclick=getValue();
      }
    
    
    
    
    //  var btnObjs=my$("input");
    //  var value=1;
    //  //循环遍历每个按钮
    //  for(var i=0;i<btnObjs.length;i++){
    //
    //    //为每个按钮注册点击事件
    //    btnObjs[i].onclick=function () {
    //      console.log("哈哈");
    //      this.value="赞("+(value++)+")";
    //    };
    //  }
    
    
    </script>
    </body>
    </html>
    

    5、沙箱
    在这里插入图片描述
    在这里插入图片描述
    自调用函数形成的沙箱
    在这里插入图片描述
    沙箱内定义变量与外界同名全局变量不冲突
    案例:沙箱内如果没有相关属性或方法,可以访问到沙箱外的相关内容
    利用沙箱可避免重名
    6、递归
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    oracle中 start with .. connect by prior.. 用法简介
    Java中com.jcraft.jsch.ChannelSftp讲解
    linux修改系统时间和linux查看时区、修改时区的方法
    map.containsKey
    Struts2中struts.multipart.maxSize配置
    oracle定时器job的使用
    java的System.getProperty()方法可以获取的值
    夜间模式的开启与关闭,父模板的制作
    开始Flask项目
    完成登录与注册页面的前端
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485285.html
Copyright © 2020-2023  润新知