Private und public Properties und Methoden mit JavaScript

Einer der schönsten Sätze aus der Objektorientierten Programmierung ist: „Keep it DRY, shy, and tell the other guy“. Das shy bezieht sich in diesem Fall auf die Datenkapselung, welche verantwortlich für den kontrollierten Zugriff auf Methoden bzw. Attribute von Klassen ist. Die wichtigsten Zugriffsarten sind dabei „private“ und „public“, welche sich auch mit JavaScript modellieren lassen:

Beispiel:

var myModule = function(){
  var privateProperty = "Top Secret!";
  var privateMethod = function(){
    alert("Private: "+privateText);
  }
 
  return {
    publicProperty: "Hello World!",
    publicMethod: function(){
      console.log("My private property: "+privateProperty);
      console.log("My public property: "+this.publicProperty);
    }
  };
}();

Aufruf:

myModule.publicMethod();

Vielen Dank an das Module Pattern von Douglas Crockford.

Weitere Infos:
A JavaScript Module Pattern, Eric Miraglia
Introduction to the JavaScript Module Design Pattern, Colin O’Dell
JavaScript Module Pattern: In-Depth, Ben Cherry
Learning JavaScript Design Patterns, Addy Osmani

Statische Methoden in PHP

In PHP können nicht-statische Methoden einer Klasse auf statische Variablen zugreifen.

Beweis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
 
class StaticTester 
{ 
	// Statische Variable
	private static $_id=72; 
 
	// Default-Konstruktor
	function __construct() 
	{
		self::$_id++;
	}
 
	// Statische Methode
	public static function staticMethod() 
	{ 
		echo ('call of static method: ' . self::$_id);
	} 
 
	// Nicht-statische Methode
	public function nonStaticMethod() 
	{
		echo ('call of non-static method: ' . self::$_id);
	} 
}
 
	StaticTester::staticMethod();
	echo "<br/>";
	StaticTester::nonStaticMethod();
 
?>

Das ist ein Unterschied zum Standard in Java.