Вот, на мой взгляд более приемлимий вариант приватного метода. Но все же у него есть 2 недостатка:
- в конструкторе его нельзя вызвать как this.privateMethod();
- из-за того, что вотчить _global невозможно, нельзя запретить переписать весь класс вместе с методом.

Код:
function TClass () {
this.protectPrivate = function(prop, nVal, oVal) {
throw new Error ("Method is private!");
}
this.privateMethod = function() {
var flag = true;
for (var i in this) {
if (arguments.caller == this[i]) flag = false;
}
trace(flag);
TClass.prototype.watch("privateMethod", this.protectPrivate);
this.watch("privateMethod", this.protectPrivate);
if (flag) throw new Error ("Method is private!");
trace ("private method accessed");
}
this.publicMethod = function() {
this.privateMethod();
}
this.toString = function() {
return "[TClass]";
}
privateMethod();
}
var t = new TClass();
t.publicMethod();
/*t.privateMethod(); // can not access uncomment to see it working
TClass.prototype.privateMethod = function() {
trace("private method overrided"); // can not reassign
}
t.privateMethod = function() { // can not reassign in instances
trace("instances behavior changed");
}*/