A brief discussion of JavaScript constructors
Apr 04, 2017 am 10:26 AMWhen it comes to "ConstructionFunction", most people will think of the concept of Java classes. JavaScript also has constructors, whose usage syntax is similar to that of Java or The syntax for creating objects is similar in other class-based languages.
JavaScript constructor is a special type of function, characterized by:
Use the
<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a>
keyword to call the functionThe first letter of the function is capitalized
During the interview, I often ask two questions about the constructor:
-
Does the first letter of the constructor have to be capitalized?
Will there be an error if I run the constructor directly without using the
new
keyword? If no error occurs, what is the difference between calling the constructor withnew
and withoutnew
?
Basically 100% of the students can answer question 1 correctly (both uppercase and lowercase), and 20% of students will answer question 2 incorrectly, especially the second question.
So, let us see what role new
operator plays?
1. Use the new operator to call the function
Example:
function Person(name){ this.name = name; this.say = function(){ return "I am " + this.name; } } var person1 = new Person('nicole'); person1.say(); // "I am nicole"
Use new
to call the constructor, the following changes will occur inside the function:
Create a this variable, which points to an empty object. And the object inherits the prototype of the function;
properties and methods are added to the object referenced by this;
- Implicitly return this object (if no other object is returned explicitly)
function Person(name){ // 创建this变量,指向空对象 var this = {}; // 属性和方法被加入到this引用的对象中 this.name = name; this.say = function(){ return "I am " + this.name; } // 返回this对象 return this; }
new is that the
this object points to the object
generated by the constructor, so person1 .say()will return
string: "I am nicole".
小贴士 如果指定了返回对象,那么,"this"对象可能被丢失。 function Person(name){ this.name = name; this.say = function(){ return "I am " + this.name; } var that = {}; that.name = "It is that!"; return that; } var person1 = new Person('nicole'); person1.name; // "It is that!"
this object points to
window, and no object will be returned by default (Unless the return value is explicitly declared).
Person function as an example and directly call the
Person function:
var person1 = Person('nicole'); person1; // undefined window.name; // nicole
new keyword, you can add some judgment conditions to force the call to the
new keyword , the code is as follows:
function Person(name){ if (!(this instanceof Person)) { return new Person(name); } this.name = name; this.say = function(){ return "I am " + this.name; } } var person1 = Person('nicole'); console.log(person1.say()); // I am nicole var person2 = new Person('lisa'); console.log(person2.say()); // I am lisa
The above is the detailed content of A brief discussion of JavaScript constructors. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

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

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

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

Hot Topics

How to implement an online speech recognition system using WebSocket and JavaScript

WebSocket and JavaScript: key technologies for implementing real-time monitoring systems

How to implement an online reservation system using WebSocket and JavaScript

How to use JavaScript and WebSocket to implement a real-time online ordering system

Simple JavaScript Tutorial: How to Get HTTP Status Code

JavaScript and WebSocket: Building an efficient real-time weather forecasting system

How to use insertBefore in javascript

How to get HTTP status code in JavaScript the easy way
