Home > Web Front-end > JS Tutorial > Understanding of new functionName() to define a function_Basic knowledge

Understanding of new functionName() to define a function_Basic knowledge

WBOY
Release: 2016-05-16 16:47:17
Original
1421 people have browsed it

For example, define two calling methods of a function:

Copy code The code is as follows:

function getInfo () {
var info = {
message: "message"
};
return info;
}

1, var info1 = getInfo() ;

2. var info2 = new getInfo();

Is there any difference between 1 and 2? Are the values ​​obtained by info1 and info2 the same?

The first one is very simple and widely used. It is to execute a function, accept the return value of the function and assign it to the info1 object;

The second situation is generally rare. . First of all, a function is also an object, and it can definitely be instantiated (instantiation is actually calling the object's constructor to initialize the object). The second case is to call the getInfo function object's constructor and receive the constructor initialization. instance (usually this), and a special feature of the function is that if the constructor has a displayed return value, the return value will be used to replace the this object. So in the second case, new getInfo calls the constructor (the constructor of the function is its definition itself) and receives the return value info.

Application:

1. For example, HTML defines the DOM object:
, the js code is as follows:
Copy code The code is as follows:

function $(domId) {
var dom = document.getElementById(domId);
return dom;
}

window.onload = function() {
var dom1 = new $("domId");
var dom2 = $("domId") ;
alert(dom1 == dom2);
}

The alert message will display true. The reason why $ is used as the function name is because when using this function, does it look a bit like jQuery's style? In fact, this style of function definition is used in jQuery's constructor. Whether you use new or call the function directly, the returned value is the same.

2. Define a compatible XMLHttpRequest object (this example is taken from Section 18.1 of the Javascript Authoritative Guide)
Everyone knows that different browsers may support asynchronous communication in different ways. Early IE used In the ActiveX way, the following code defines a compatible XMLHttpRequest object:
Copy code The code is as follows:

if (window.XMLHttpRequest === undefined) {
window.XMLHttpRequest = function() {
try {
//If available, use the latest version of the ActiveX object
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
} catch (ex1) {
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch (ex2) {
throw new Error("XMLHttpRequest is not supported")
}
}
}
}

In this way, you can directly pass var xhr = new XMLHttpRequest() is defined, regardless of whether it is IE or Firefox.
Related labels:
new
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template