call,apply,方法的使用

简介: //apply和call的使用方法 /* * apply的使用语法 * 函数名字.apply(对象,[参数1,参数2,...]); * 方法名字.apply(对象,[参数1,参数2,.
//apply和call的使用方法
    /*
    * apply的使用语法
    * 函数名字.apply(对象,[参数1,参数2,...]);
    * 方法名字.apply(对象,[参数1,参数2,...]);
    * call的使用语法
    * 函数名字.call(对象,参数1,参数2,...);
    * 方法名字.call(对象,参数1,参数2,...);
    *
    * 作用:改变this的指向
    * 不同的地方:参数传递的方式是不一样的
    *
    * 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
    *
    * */
      //方法改变this的指向
    function Person(age) {
    this.age = age;
    }
    Person.prototype.sayHi = function (x, y) {
    console.log((x + y) + ":====>" + this.age);//是实例对象
    };

    function Student(age) {
    this.age = age;
    }
    var per = new Person(10);//实例对象
    var stu = new Student(100);//实例对象
    //sayHi方法是per实例对象的
    per.sayHi.apply(stu, [10, 20]);
    per.sayHi.call(stu, 10, 20);
    
    function f1(x, y) {
    console.log((x + y) + ":=====>" + this.age);
    }
    //复制了一份的时候,把参数传入到了f1函数中,x===>10,y===>20,null就是this,默认就是window
    //bind方法是复制的意思,参数可以在复制的时候传进去,也可以在复制之后调用的时候传入进去
    //apply和call是调用的时候改变this指向
    //bind方法,是复制的时候,改变了this的指向
        //使用的语法:
    /*
    * 函数名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个函数
    * 方法名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个方法
    *
    * */
    //    var ff=f1.bind(null);
    //    ff(10,20);
    
        //通过对象,调用方法,产生数字

    function ShowRandom() {
      this.number=1;
    }
    //添加原型方法
    ShowRandom.prototype.show1=function () {
      //改变了定时器中的this的指向了,本来应该是window,现在是实例对象了
      window.setInterval(this.show2.bind(this),1000);
    };
    //添加原型方法
    ShowRandom.prototype.show2=function () {
      //显示随机数--
      console.log(this.number);
    };
    //实例对象
    var sr=new ShowRandom();
    //调用方法,输出数字
    //调用这个方法一次,可以不停的输出数字
    sr.show1();
目录
相关文章
|
算法 Dubbo NoSQL
Java中5种List的去重方法及它们的效率对比,你用对了吗?
01、使用两个for循环实现List去重(有序) /**使用两个for循环实现List去重(有序) * * @param list * */ public static List removeDuplicationBy2For(List<Integer> list) { for (int i=0;i<list.size();i++) { for (int j=i+1;j<list.size();j++) { if(list.get(i).equa
25513 2
Java中5种List的去重方法及它们的效率对比,你用对了吗?
|
3月前
|
人工智能 编解码 API
HappyHorse‑1.1系列模型全解析:新一代AI视频生成模型核心能力与API实战
随着AIGC视频创作需求持续爆发,短视频制作、短剧小样、电商产品宣传片、概念分镜预演等场景,都对AI视频模型提出更高要求。传统视频生成方案长期面临几大痛点:人物主体跨帧形象漂移、动作僵硬出现残影扭曲、音画不同步、参考素材难以复用,生成画面质感和真实物理逻辑存在明显缺陷。HappyHorse‑1.1作为迭代升级的视频生成系列模型,针对上述行业痛点完成多维度优化,提供文生视频、首帧图生视频、多参考图生视频三大核心能力,支持原生同步音频输出,能够输出最高1080P分辨率,时长3‑15秒的MP4视频素材,已经广泛应用于个人创作者、MCN机构、电商商家、中小企业内容生产等诸多业务场景。本文完整梳理Hap
395 0
|
Arthas 监控 Java
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
885 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
|
Kubernetes 负载均衡 Cloud Native
从零开始入门 K8s | 理解 CNI 和 CNI 插件
网络架构是 K8s 中较为复杂的方面之一。K8s 网络模型本身对某些特定的网络功能有着一定的要求,因此,业界已经有了不少的网络方案来满足特定的环境和要求。CNI 意为容器网络的 API 接口,为了让用户在容器创建或销毁时都能够更容易地配置容器网络。在本文中,作者将带领大家理解典型网络插件地工作原理、掌握 CNI 插件的使用。
从零开始入门 K8s | 理解 CNI 和 CNI 插件
|
人工智能 人机交互 智能硬件
从大模型的原理到提示词优化
本文介绍了大语言模型(LLM)的基本概念及其工作原理,重点探讨了AI提示词(Prompt)的重要性和几种有效技巧,包括角色设定、One-shot/Few-shot、任务拆解和思维链。通过实例解析,展示了如何利用这些技巧提升LLM的输出质量和准确性,强调了提供高质量上下文信息对优化LLM表现的关键作用。
1508 0
|
Shell Python
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
2901 0
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
|
弹性计算 容灾 安全
请接收这份阿里云服务器选购指南!
阿里云服务器选购指南!如何选择一款适合自己的阿里云服务器?请接收这份阿里云服务器选购指南!
305 0
请接收这份阿里云服务器选购指南!
|
存储 SQL 安全
MySQL数据库思维导图式总结(超详细,复习必备)
MySQL数据库思维导图式总结(超详细,复习必备),源文件在 process on(在线流程图)上面,同名,需要多多支持。
1218 0
MySQL数据库思维导图式总结(超详细,复习必备)
|
人工智能 搜索推荐 C++
Opera跟进引入ChatGPT,侧边栏生成文章简短摘要
Opera跟进引入ChatGPT,侧边栏生成文章简短摘要
298 0