Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über JavaScript-Konstruktoren

Eine kurze Diskussion über JavaScript-Konstruktoren

PHPz
PHPzOriginal
2017-04-04 10:26:061674Durchsuche

Wenn es um „KonstruktionFunktion“ geht, denken die meisten Leute an das Konzept von Java-Klassen, die auch Konstruktoren und deren Verwendungssyntax haben ähnelt der von Java oder Die Syntax zum Erstellen von Objekten ist in anderen klassenbasierten Sprachen ähnlich. JavaScript-Konstruktor ist eine spezielle Art von Funktion, gekennzeichnet durch:

    Verwenden Sie <a href="http://www.php.cn%20/wiki%20/165.html" target="_blank">neu<li></a>Schlüsselwort-Aufruffunktion

    <a href="http://www.php.cn/wiki/165.html" target="_blank">new</a>

    Der erste Buchstabe der Funktion wird großgeschrieben
  • Bei Vorstellungsgesprächen stelle ich oft zwei Fragen zu Konstruktoren:

    Muss der erste Buchstabe des Konstruktors großgeschrieben werden?
  1. Tritt ein Fehler auf, wenn ich den Konstruktor direkt ausführe, ohne das Schlüsselwort
  2. zu verwenden? Wenn kein Fehler auftritt, was ist der Unterschied zwischen dem Aufruf des Konstruktors mit

    und ohne new? newnew

  3. Grundsätzlich können 100 % der Schüler Frage 1 richtig beantworten (sowohl Groß- als auch Kleinbuchstaben), und 20 % der Schüler werden Frage 2 falsch beantworten, insbesondere die zweite Frage.

Also mal sehen, was der

-Operator new macht? 1. Verwenden Sie den neuen Operator, um die Funktion

aufzurufen:

Verwenden Sie
function Person(name){
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
}

var person1 = new Person('nicole');
person1.say(); // "I am nicole"
, um den Konstruktor aufzurufen. Die folgenden Änderungen werden innerhalb der Funktion vorgenommen :

new

    erstellt eine this
  • -Variable

    , die auf ein leeres Objekt zeigt. Und das -Objekt erbt den Prototyp der

  • Eigenschaften und Methoden
  • werden dem Objekt hinzugefügt, auf das dadurch verwiesen wird

    ;

    Dieses Objekt implizit zurückgeben (wenn kein anderes Objekt explizit zurückgegeben wird)
  • Verwenden Sie ein Pseudoprogramm, um die oben genannten Änderungen zu demonstrieren:

Es ist ersichtlich, dass das größte Merkmal der Verwendung von

zum Aufrufen des Konstruktors darin besteht, dass das
function Person(name){
  // 创建this变量,指向空对象
  var this = {}; 
  // 属性和方法被加入到this引用的对象中
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
  // 返回this对象
  return this;
}

-Objekt auf das vom Konstruktor generierte Objekt new verweist, also gibt die this-Zeichenfolge zurück: „Ich bin Nicole“. person1.say()2. Rufen Sie die Funktion direkt auf

小贴士

如果指定了返回对象,那么,"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!"
Wenn die Funktion direkt aufgerufen wird, zeigt das

-Objekt auf

und es wird standardmäßig kein Objekt zurückgegeben (es sei denn explizit als Rückgabewert deklariert).

thisNehmen wir die Funktion window als Beispiel und rufen die Funktion

direkt auf:

PersonPersonEs ist ersichtlich, dass das Ergebnis des direkten Aufrufs des Konstruktors nicht das ist, was wir haben wollen.

var person1 = Person('nicole');
person1; // undefined
window.name; // nicole
3. Zusammenfassung

Um zu verhindern, dass der Konstruktor aufgerufen wird, weil Sie vergessen haben, das Schlüsselwort

zu verwenden, können Sie einige Beurteilungsbedingungen hinzufügen, um den Aufruf des Schlüsselworts

zu erzwingen. Der Code lautet wie folgt:

newnew 

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über JavaScript-Konstruktoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn