2016-05-12 12 views
1

Sorry, wenn es doppelt ist, aber ich habe keine Erklärung gefunden. Wie kann ich ein Feld in der js-Klasse erstellen? in der Zukunft zu definieren ...Wie kann ich auf das Feld in Javascript-Klasse zugreifen

class Polygon { 
    //var whyNot; This makes false 
    constructor(height, width) { 
     this.height = height; 
     this.width = width; 
    } 

    calcArea() { 
    return this.height * this.width; 
    } 
} 
+0

Stehen Sie mit ES6, Typoskript, usw. verwenden können? – War10ck

+0

Ich glaube nicht - ich habe dieses Beispiel hier gefunden https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes und ich versuche, auf einem klaren Dokument zu lernen. – nolbadi111

+0

Dieses Beispiel ist ES6. Ich habe das Tag zu Ihrer Frage hinzugefügt, um es besser sichtbar zu machen. – War10ck

Antwort

-2

Überprüfen Sie diese Antwort. Constructors in JavaScript objects

Sie haben keine "Klasse" in Javascript, Sie definieren das Objekt als eine Funktion. Sie definieren vererbbare Funktionen als Prototypen. so ziemlich würden Sie "Prototyp" Schlüsselwort für oop Verhalten verwenden.

+2

Ab ES6 hat JavaScript Klassen: http://stackoverflow.com/questions/28308578/member-variables-in-es6-classes – War10ck

0

Ihr Verständnis von JS-Objekten ist ein wenig aus ... Sie erstellen eine Variable, die die Funktion aufruft, die ein eigener Konstruktor ist. Dann ändern Sie das Objekt so, dass es Funktionen enthält, die Sie später aufrufen möchten. wie dies https://jsfiddle.net/programndial/vonc5af5/

<input type="button" id="testButton" value="Test" /> 

function Polygon(height, width) { 
    this.height = height; 
    this.width = width; 

    Polygon.prototype.calcArea = function(string) { 
     return this.height * this.width; 
    } 
} 

testButton.onclick = function() { 
    var newPoly = new Polygon(10, 25); 
    alert(newPoly.calcArea()); 
} 
+0

Ich erstelle keine Variable, die die Funktion aufruft, die ein eigener Konstruktor ist. nach "whyNot" Variabel ist nein = Konstruktor usw. Ich versuche, ein Feld wie "whyNot = 3;" aber ich kann nicht. – nolbadi111

+0

@ nolbadi111 ich sage nur deine js class construction is off .. sieh dir [this fiddle] (https://jsfiddle.net/programdial/82zhgf8h/) an, du kannst genau das machen, was du willst. – programndial

+0

@ nolbadi111 nur daran erinnern, dass Mitglieder mit var deklariert sind privat und kann nur durch Methoden der 'Klasse' geändert werden .. Wenn Sie eine öffentliche Eigenschaft wollen, müssen Sie this.whyNot – programndial

0

Die Antwort ist (teilweise) in Frage.

Wir werden von dem Code und dem Link in Ihrem Kommentar annehmen, dass Sie eine aktuelle Version von Javascript verwenden: ES6 oder ES2015.

Sie können sie in der constructor Methode wie in dem Code, den Sie zur Verfügung gestellt haben, erstellen.

class Polygon { 

    constructor(height, width) { 
     //height and width will be fields of Polygon 
     this.height = height; 
     this.width = width; 
     //...and whyNot too! 
     this.whyNot = 42; 
    } 

    ... 

Natürlich, da ES6 ist die früheren Versionen von Javascript noch kompatibel Sie constructor methods, object literals...

Verwandte Themen