aCarella aCarella - 20 days ago 5
Javascript Question

Instance Variables in Javascript Classes

I mostly code in PHP and Java, but I will occasionally work on the front end of a project and use JavaScript. I usually create objects differently than below, but I came across this and it caught my interest being that the syntax is similar to what I usually program in.

I was poking around, trying to figure out how to use instance variables in JavaScript classes using the syntax below. I've tried declaring the instance variables by

name;
, or
_name;
, or
var name;
, or all of those previous variables and adding
= null;
, but still get errors in my console. The errors are mostly
my-file.js:2 Uncaught SyntaxError: Unexpected identifier
. I'm just trying to set my instance variable through my constructor.

How do I use instance variables in JavaScript, using the syntax below?

class MyClass {
var _name;

constructor(name) {
_name = name;
alert("Hello world, from OO JS!");
this.myFunction();
}

myFunction() {
document.getElementById("myElement").addEventListener("click", function() {
console.log("Ant's function runs. Hello!");
});
}
}

window.onload = function() {
var person = "John Smith";
var myClass = new MyClass(person);
}

Answer

This is still a proposal and it would look as follows:

class A {
   property = "value";
}

BTW, when you want to access a class property (i.e. an own object property) you'll still need to use this.property:

class A {
    property = "value";

    constructor() {
        console.log(this.property);
    }
}

If you want to use this syntax today, you'll need to use a transpiler like Babel.