相同点:
apply和call方法都是Function.prototype原型中,他们可以改变this的指向,而且都是直接调用函数
不同点:
apply:参数传入的是数组
call:参数传入的是一个一个的
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> //call和apply通过对象调用的时候,如果传入的是null,那么函数中的this就是window对象 //call和apply通过对象调用的时候,如果传入的是对象,那么函数中的this就是当前传入的对象 //如果传入的是数组,那么this就是当前的数组对象 function f1(num1, num2) { //当前this的指向 console.log(this); //调用this中的属性 console.log("name=" + this.name); console.log(num1+num2); } var stu = {name:"kevin", age:12}; f1(1, 2); // call和apply调用的时候,传入的第一个参数改变了f1中this的指向 // apply的参数要使用数组 // call和apply方法都可以调用f1中的属性 f1.call(stu, 10, 20); f1.apply(stu, [100, 200]); </script> </body> </html>
结果: