Introduction
It won't be easy for beginner programmers to understand the principles of the object model and inheritance in JavaScript. I will try to help you: to describe a class, it is necessary to describe class constructor (it is just a simple function). Class methods and inheritance are described through prototypes. The hidden methods and properties are made through closing.
But to my mind, this way isn't convenient. I will tell you a simpler way. Let's create the project:
<!DOCTYPE HTML>
<html>
<head>
<title>Sample project</title>
<!--
<link rel="stylesheet" type="text/css" href="http://a-web.me/styles/default/a-web.css" >
<!--
<script type="text/javascript" src="http://a-web.me/scripts/a-web.js"></script>
</head>
<body>
<script type="text/javascript">
function main() {
}
</script>
</body>
</html>
The main function will be called automatically after page is loaded. In our example HTML code doesn't change therefore I will write only a JavaScript-code. Let's create a class TMyClass.
var TMyClass = AWeb.class({
public : {
constructor : function() {
alert( "MyClass constructor" );
}
}
});
function main() {
var myClass = new TMyClass();
}
Let's add the private variable "name" and the public method "getName":
var TMyClass = AWeb.class({
public : {
constructor : function( initValue ) {
this.name = initValue||"A-class";
},
getName : function() {
return this.name;
}
}
});
I draw your attention to the fact that the "name" variable is available only in the class TMyClass. The call of "myClass.name" will return undefined value. But the call of "myClass.getName()" will return "A-class" value.
Let's create an inherit class:
var TMyInhClass = AWeb.class({
extends : TMyClass,
public : {
constructor : function() {
this.super( "B-class" );
}
}
});
The inherit class can access all the public and protected methods of a parent class. There is an example of call:
function main() {
var myClass = new TMyClass(),
myInhClass = new TMyInhClass();
alert(
"myClass.getName() = " + myClass.getName() + "\n" +
"myInhClass.getName() = " + myInhClass.getName() + "\n\n" +
"myClass.name = " + myClass.name + "\n" +
"myInhClass.name() = " + myInhClass.name
);
}
The complete code looks like:
<!DOCTYPE HTML>
<html>
<head>
<title>Sample project</title>
<!-- Styles -->
<link rel="stylesheet" type="text/css" href="http://a-web.me/styles/default/a-web.css" >
<!-- Scripts -->
<script type="text/javascript" src="http://a-web.me/scripts/a-web.js"></script>
</head>
<body>
<script type="text/javascript">
var TMyClass = AWeb.class({
public : {
constructor : function( initValue ) {
this.name = initValue||"A-class";
},
getName : function() {
return this.name;
}
}
});
var TMyInhClass = AWeb.class({
extends : TMyClass,
public : {
constructor : function() {
this.super( "B-class" );
}
}
});
function main() {
var myClass = new TMyClass(),
myInhClass = new TMyInhClass();
alert(
"myClass.getName() = " + myClass.getName() + "\n" +
"myInhClass.getName() = " + myInhClass.getName() + "\n\n" +
"myClass.name = " + myClass.name + "\n" +
"myInhClass.name() = " + myInhClass.name
);
}
</script>
</body>
</html>
Very simply. I will draw your attention again that private methods and variables are visible only in class methods. The examples use the AWeb Library.
If the article has helped someone, I will tell you about the properties of the classes. I will give examples of protected methods and interfaces of classes in the next article. Thanks for reading.
Other Articles About the Library
I decided to link the articles, because there is not much information on the internet