When learning JavaScript, it is always difficult to understand the usage of call() and apply(). I believe many friends have the same idea as me. Now share it with your friends.
call
Syntax: call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Definition: Call an object Method to replace the current object with another object.
After reading the syntax and definition, it is still difficult to understand. The call function can accept several parameters. The first parameter is the object of the current operation, and the following parameters are the parameters of the called method. So It’s still hard to understand, so go straight to the code:
function Teacher(name, age) { //定义一个构造函数Teacher this.name = name; this.age = age; this.intro = function() { alert("My name is " + this.name + "," + "I'm " + this.age) } } function Student(name, age) { //定义一个构造函数Student Teacher.call(this, name, age); //Student调用了Teacher的方法 } var studentA = new Student("Lily", 19); //实例化一个studentA,传入参数 studentA.intro(); //调用studentA的intro方法 输出:My name is Lily,I'm 19
In the above example, studentA is instantiated through the constructor Student. It should inherit all the inheritable methods of the Student constructor, but we see that the Student function does not have any method, but Student called it, which can be said to have inherited Teacher's method, so studentA also has the intro() method. The tenth line of the code plays a key role Teacher.call(this, name, age). The function of this sentence is to make the current object call the method of another object. The this keyword here refers to the Student() object. After instantiation this refers to the studentA object, and the following parameters are the parameters passed in by Teacher. Maybe the above example is not very common, but we often see code like this:
var str="你好美女"; Array.prototype.join.call(str,"!"); //你!好!美!女
The join method is a unique method for arrays. It is a method defined in the prototype of the Array() constructor, so we instantiate All arrays that have been transformed inherit this method, but the string str does not have a join method, but here we borrow the join method of the array to process the string. The expression on the left side of call is the method of the borrowed object, and the first parameter object in call() borrows the method of the expression object on the left side of call (I don’t know if I can understand this, so I’ll just make do with it).
apply
The apply() method has the same function as the call method, except that the parameters passed in are different.
Syntax: apply([thisObj[,argArray]])
Definition: Apply a method of a certain object and replace the current object with another object.
The first parameter of apply is the same as call, and the second parameter is an array object (array-like can also be used). It no longer passes parameters in the form of a single parameter list, but Put all parameters into an array and pass them in together. Here we have to talk about the arguments object, which exists in every function and is an array-like object composed of all the actual parameters of the function. So the second parameter of apply is passed in the arguments object. Look at the following example:
var arr=[2,3,12,5,234,199,21,1000,2432]; var max=Math.max.apply(Math,arr); console.log(max); //2432
There is no method to find the maximum value in the array, but there is max in the Math object to find the maximum value, so we use the apply method to let the array inherit the max() method of Math to find the array. The maximum value of The beauty of these two functions goes far beyond that. Experts are welcome to add more.
The above is the detailed content of Understanding call() and apply() in js. For more information, please follow other related articles on the PHP Chinese website!

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Dreamweaver CS6
Visual web development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Notepad++7.3.1
Easy-to-use and free code editor
