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
25494 2
Java中5种List的去重方法及它们的效率对比,你用对了吗?
|
Arthas 监控 Java
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
868 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表现的关键作用。
1480 0
|
自然语言处理 JavaScript 前端开发
< JavaScript技巧:如何优雅的使用 【正则】校验 >
本文介绍了JavaScript中的正则表达式使用,包括正则的基本概念、创建方法、常用正则对象方法如`RegExp`的`exec`、`test`、`toString`以及`String`对象的`search`、`match`、`replace`、`split`。正则表达式修饰符如`i`、`m`、`g`也进行了讲解。文章还分享了一些常见的正则表达式实例,如匹配ASCII码、汉字、邮箱、邮政编码等,并提到了正则的理论知识,如贪婪匹配、预查等。
420 0
< JavaScript技巧:如何优雅的使用 【正则】校验 >
|
Shell Python
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
2875 0
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
|
弹性计算 容灾 安全
请接收这份阿里云服务器选购指南!
阿里云服务器选购指南!如何选择一款适合自己的阿里云服务器?请接收这份阿里云服务器选购指南!
291 0
请接收这份阿里云服务器选购指南!
|
存储 SQL 安全
MySQL数据库思维导图式总结(超详细,复习必备)
MySQL数据库思维导图式总结(超详细,复习必备),源文件在 process on(在线流程图)上面,同名,需要多多支持。
1205 0
MySQL数据库思维导图式总结(超详细,复习必备)
|
Ubuntu 关系型数据库 MySQL
MySQL的无法创建表格errno 150
MySQL的无法创建表格errno 150
363 0

热门文章

最新文章