Strictly speaking, there’s no class in Javascript. To create objects of class, there are a few options:
1. Directly define an object as well as its vars/methods. You cant create its instances in this case.
var foo = { x: [1,2,3], y: function(name) { return 'hello '+name; } } console.log(foo.x); //OK console.log(foo.y('john')); //OK var foo2 = new foo();//wrong: object is not a function
operator new has to be used on a function.
2. Define a function as well as its vars/methods. Create instance through new. For the vars there are two options:
2.1 vars are public members through “this.”.
var foo = function(name) { this.x = [1,2,3]; this.y = function() { return 'hello '+name; } } console.log(foo.x);//undefined console.log(foo.y());//no such method var foo2 = new foo('john'); console.log(foo2.x); console.log(foo2.y());
2.2 vars are private by not using this
var foo = function(name) { var x = [1,2,3]; this.y = function() { return 'hello '+name; } this.getX = function() { return x; } } //console.log(foo.x);//undefined //console.log(foo.y());//no such method var foo2 = new foo('john'); console.log(foo2.x);//undefined. x becomes private console.log(foo2.y()); console.log(foo2.getX());
3. Define a function. Vars/methods are added through prototype.. Create instance through new. This way instances all share the same method space improve runtime efficiency.
Reblogged this on Sutoprise Avenue, A SutoCom Source.