Java教程

关于javascript中call与apply与bind的用法

本文主要是介绍关于javascript中call与apply与bind的用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先,他们三者最终都是用于改变this的指向。

call与apply的主要作用是让对象能以方法的方式调用函数,有什么用呢?就是对象的方法里面的this指向的是该对象而函数中的this指向的是window,所以改变了this的指向,下面来一个简单的例子

 // call与apply是改变this指向 是对象为了以方法的方式调用函数 this指向为括号内第一个参数对象
      var name = "李白";
      function info(age, sex) {
        console.log(this.name + "--" + age + "--" + sex);
      }
      info(15, "男"); //输出李白--15 因为函数内的this指向window
      var lisan = {
        name: "李三",
      };
      info.call(lisan, 67, "女"); //输出李三--67 这时候函数指向lisan这个对象
      info.apply(lisan, [67, "女"]); //输出李三--67 这时候函数指向lisan这个对象
      info.bind(lisan, 67, "女")(); //输出李三--67 这时候函数指向lisan这个对象

call第一个参数后,是你要给方法传的参数,比如:f.call(object,1,2,3,4,5)

而apply只有两个参数第一个和call一样是对象参数,第二个是数组类型参数,是将你要给方法的参数组成一个数组传入进去,比如:f.apply(object,[1,2,3,4,5])

至于bind,是es5新加的方法,它的定义是,将函数绑定到对象上,这个方法将返回一个新的函数,它的用法和参数与call很像,区别就是他只是绑定没有调用,想要调用方法就要加一个括号,比如f.bind(object,1,2,3,4,5)()

这篇关于关于javascript中call与apply与bind的用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!