The apply and call functions are the same, but the input parameter lists are in different forms. This article introduces the definitions of the apply and call methods and the differences between the apply and call methods, if you are interested in learning it together, if you haven't touched any dynamic language, it will be amazing and strange to understand javaScript in the way of compiling language thinking, because it is often impossible to realize things happen, and even feel unreasonable. if you encounter this feeling when learning JavaScript, a free and ever-changing language, let go of your "prejudice" from now on ", this is definitely a new world for you. Let's get down to the truth. Let's explain the definitions of the apply and call methods first.
The specific content is as follows:
1. method definition
Call and apply all belong to Function. prototype is implemented internally by the JavaScript engine because it belongs to Function. prototype, so each Function object instance, that is, each method has the call and apply attribute. since they are attributes of methods, their use is of course for methods. these two methods are easy to confuse, because they have the same effect, but they are used in different ways.
Call method:
Syntax: call ([thisObj [, arg1 [, arg2 [, [,. argN])
Definition: call a method of an object to replace the current object with another object.
Note:
The call method can be used to call a method instead of another object. The call method can change the object context of a function from the initial context to the new object specified by thisObj.
If the thisObj parameter is not provided, the Global object is used as thisObj.
Apply method:
Syntax: apply ([thisObj [, argArray])
Definition: apply a method of an object and replace the current object with another object.
Note:
If argArray is not a valid array or an arguments object, a TypeError occurs.
If neither argArray nor thisObj is provided, the Global object will be used as thisObj and cannot be passed with any parameters.
Call, apply is called by someone else's method, just like calling your own.
Their differences:
Apply: a maximum of two parameters are allowed: The New this object and an array argArray. If multiple parameters are passed to this method, all parameters are written into this array. Of course, even if there is only one parameter, they must be written into the array. If argArray is not a valid array or an arguments object, a TypeError occurs. If neither argArray nor thisObj is provided, the Global object will be used as thisObj and cannot be passed with any parameters.
Call: this is a list of direct parameters. It is mainly used when the methods of js objects call each other to make the current pointer of this instance consistent, or in special cases, you need to change the this pointer. If the thisObj parameter is not provided, the Global object is used as thisObj.
To put it simply, the apply and call functions are the same, but the input parameter lists are in different forms: for example, the apply method corresponding to func. call (func1, var1, var2, var3) is as follows:
Func. apply (func1, [var1, var2, var3])
For example:
Add. apply (sub, [3, 1]); // add. call (sub, 3, 1); var a = {n: 1, m: 2, add: function () {return this. n + this. m ;}} var B = {n: 3, m: 4} console. log (. add. call (B); // B. n + B. m = 7 function Animal () {this. name = "Animal"; this. showName = function () {alert (this. name) ;}} function Cat () {this. name = "Cat";} var animal = new Animal (); var cat = new Cat (); // use the call or apply method to convert the showName () that originally belongs to the Animal object () the method is handed over to the object cat for use. // The input result is "Cat" animal. showName. call (cat, ","); animal. showName. apply (cat, []).
The above content is the difference between the definitions of the apply and call methods and the apply and call methods described in the editor. I hope you will like them.