This time I will bring you javascriptWhat are the differences between call, apply and bind in javascript? What are the precautions when using call, apply and bind in javascript? The following is a practical case , let’s take a look.
First of all, add the concept of strict mode, which was proposed in ES5. Just write:
“use strict”
to tell the current browser that the next JavaScript code will be written in strict mode.
function fn() { console.log(this); }
fn.call(); // In normal mode this is window, in strict mode this is undefined
fn.call(null); // In normal mode this is window, in strict mode this is null
fn.call(undefined); // In normal mode this is window, in strict mode this is undefined
The functions of the apply method and the call method They are exactly the same. They are used to change the this keyword of the method and execute the method. In strict mode and non-strict mode, the rules are the same for the case where the first parameter is null/undefined. It is just passed The parameters of function are different.
function fn(num1, num2) { console.log(num1 + num2); console.log(this); }fn.call(obj , 100 , 200);fn.apply(obj , [100, 200]);123456
When call passes parameters to fn, it passes the values one by one, but apply does not pass them one by one, but puts the parameter values to be passed to fn in the same place. Operating in an array is also equivalent to assigning values to the formal parameters of fn one by one.
The bind method is slightly different from apply and call. The bind method changes the this of fn to the result we want in advance, and prepares the corresponding parameter values. It will be used in the future and executed directly. That's it, that is to say, bind can also change the direction of this, but unlike apply and call, it will not be executed immediately.
var tempFn = fn.bind(obj, 1, 2); tempFn();
The first line of code only changes this in fn to obj, and passes two parameter values 1 and 2 to fn. However, the fn function is not executed at this time. When executing bind, there will be A return value. This return value tempFn is the result of changing this of fn.
Note: The bind method is not compatible with IE6~8.
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to the php Chinese website Other related articles!
Recommended reading:
How to use spring boot’s scheduled tasks
Detailed explanation of call in javascript
The above is the detailed content of What are the differences between call, apply and bind in javascript. For more information, please follow other related articles on the PHP Chinese website!