javascript function calling rules_javascript skills
(1) Global function call:
function makeArray( arg1, arg2 ){
return [this , arg1 , arg2 ];
}
This is the most commonly used way to define functions. I believe that people who learn JavaScript are familiar with its use.
The calling code is as follows:
makeArray('one', 'two');
// => [ window, 'one', 'two' ]
This way can be said It is a global function call.
Why is it said to be a global function?
Because it is a method of the global object window,
We can verify it with the following method:
alert( typeof window.methodThatDoesntExist );
// => undefined
alert( typeof window.makeArray);
// => function
So the method we used to call makeArray is the same as the method called below
window.makeArray('one', 'two') ;
// => [ window, 'one', 'two' ]
JavaScript function calling rule two
(1) Object method calling:
//creating the object
var arrayMaker = {
someProperty: 'some value here',
make: makeArray
};
arrayMaker.make('one', 'two'); // => [ arrayMaker, 'one', 'two' ]
//Or call it using the following method:
arrayMaker['make']('one', 'two') ; // => [ arrayMaker, 'one', 'two' ]
See the difference between this and just now, the value of this becomes the object itself.
You may question: Why The original function definition has not changed, but this has changed?
Excellent, it’s right to have doubts. This involves the way functions are passed in JavaScript.
A function is a standard data type in JavaScript.
To be precise, it is an object. You can pass them or copy them.
It's like the entire function Both the parameter list and the function body are copied, and
is assigned to the property make in arrayMaker. It is like defining an arrayMaker like this:
var arrayMaker = {
someProperty: 'some value here',
make: function (arg1, arg2) {
return [ this, arg1, arg2 ];
}
};
If you don’t understand the second calling rule, then in Various bugs are often encountered in event handling code, for example:
function buttonClicked(){
var text = (this === window) ? 'window' : this.id;
alert( text );
}
var button1 = document.getElementById('btn1 ');
var button2 = document.getElementById('btn2');
button1.onclick = buttonClicked;
button2.onclick = function(){
buttonClicked();
};
Clicking the first button will display "btn1" because it is a method call and this is the object it belongs to (button element).
Clicking the second button will display "window" because buttonClicked is called directly (unlike obj.buttonClicked()).
For this and the third button, the event handler is placed directly in the label. are the same. So the result of clicking the third button is the same as the second one.
So please pay attention:
button1.onclick = buttonClicked;
button2.onclick = function(){
buttonClicked();
};
this points to yes Differentiated.
JavaScript function call rule three
Of course, if you are using the jQuery library, then you don’t have to think so much, it will help rewrite the value of this to ensure it Contains a reference to the current event source element.
//Use jQuery
$('#btn1').click( function() {
alert( this.id ); // jQuery ensures 'this' will be the button
}) ;
So how does jQuery overload the value of this?
The answer is: call() and apply();
When the function is used more and more, you will It is found that the this you need is not in the same context, which makes communication extremely difficult.
In Javascript, functions are also objects. Function objects contain some predefined methods, two of which are apply() and call(). We can use them to reset the context of this.
function buttonClicked(){
var text = (this === window ) ? 'window' : this.id;
alert( text );
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2' );
button1.onclick = buttonClicked;
button2.onclick = function(){
buttonClicked.call(this); // btn2
};
JavaScript function calling rule four
(1) Constructor
I don’t want to delve into the definition of types in Javascript, but at this moment we need to know that there are no classes in Javascript,
And any custom type requires an initialization function. It’s also a good idea to define your type using a prototype object (as an attribute of the initialization function).
Let’s create a simple type
//Declaration A constructor
function ArrayMaker(arg1, arg2) {
this.someProperty = 'whatever';
this.theArray = [ this, arg1, arg2 ];
}
// Statement Instantiation method
ArrayMaker.prototype = {
someMethod: function () {
alert( 'someMethod called');
},
getArray: function () {
return this .theArray;
}
};
var am = new ArrayMaker( 'one', 'two' );
var other = new ArrayMaker( 'first', 'second' ) ;
am.getArray();
// => [ am, 'one' , 'two' ]
other.getArray();
// => [ other, 'first', 'second' ]
A very important and noteworthy thing is the new operator that appears before the function call. Without that, your function is just like a global function, and the properties we created All will be created on the global object (window), and you don't want that.
Another point, because there is no return value in your constructor, if you forget to use the new operator, some of your variables will be assigned undefined.
So it is a good habit to start the constructor function with a capital letter. This can be used as a reminder not to forget the previous new operator when calling.
In this way, the code in the initialization function is as follows Initialization functions you write in other languages are similar. The value of this will be the object you will create

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.


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

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools