Organizing Javascript codes from a C# perspective using object oriented concepts
This is a follow up article on Organizing Javascript codes from a C# perspective using namespaces. If you haven’t read the previous article I strongly recommend it do so.
In this article I will discuss on how to structure the Javascript codes using Object Oriented Programming (OOP) concepts which you are highly familiar with in C#.
Lets start first by writing a C# class. (These naming conventions are not of C# standards and never try to write one in this way. Its been written only as an example to map with Javascript codes for convenience.)
namespace A.B
{
using System;
public class Test
{
public Test()
{
Console.WriteLine("constructor");
}
private string private_property = "private_property (field)";
private void private_method()
{
Console.WriteLine("private method");
}
public string public_property = "public_property (field)";
public void public_method()
{
Console.WriteLine("public_method");
}
public static string static_property = "public static property";
public static void static_method()
{
Console.WriteLine("public static_method");
}
}
}
First of all we need to wrap code in the namespace block A.B.
if (!A) var A = {};
if (!A.B) A.B = {}; // careful here, var is not present here, only in the first one
Please refer to the my tutorial on Organizing Javascript codes from a C# perspective using namespaces which describes in more details.
Then we create the class same as in C#.
A.B.Test = function () {
};
This looks similar to a function. Well it is a function. So in order to instantiate the object of this class you call the function.
var t = A.B.Test();
Now that we are able to create the class, lets create public and private properties and methods.
A.B.Test = function () {
// ctor
alert('constructor');
var _private_var = 'private var';
private_method = function () {
alert('private method');
}
alert('or can even write ctor anywhere');
return {
public_property: "public_property",
public_method: function () {
alert("public_method");
}
};
};
A.B.Test.public_static_property = 'public static property';
A.B.Test.public_static_method = function () {
alert('public static method');
};
And here’s are the tests.
var t = A.B.Test();
alert(t.public_property);
t.public_method();
if (typeof (t._private_var) != 'undefined')
alert('can access private var, test failed');
else
alert('cannot access private var, test passed');
try {
t.private_method();
alert('can access private method, test failed');
} catch (e) {
alert('cannot access private method, test passed');
}
alert(A.B.Test.public_static_property);
A.B.Test.public_static_method();
So next time you write Javascript, try implementing these OOP concepts. It will really help you out in organizing your codes.