How to inherit a private member in JavaScript?

inheritance, javascript, private-members

Solution

Using Douglas Crockfords power constructor pattern (link is to a video), you can achieve protected variables like this:

function baseclass(secret) {
    secret = secret || {};
    secret.privateProperty = "private";
    return {
        publicProperty: "public"
    };
}

function subclass() {
    var secret = {}, self = baseclass(secret);
    alert(self.publicProperty);
    alert(secret.privateProperty);
    return self;
}

Note: With the power constructor pattern, you don't use `new`. Instead, just say `var new_object = subclass();`.

Problem

is there a way in JavaScript to inherit private members from a base class to a sub class? I want to achieve something like this: ``` function BaseClass() { var privateProperty = "private"; this.publicProperty = "public"; } SubClass.prototype = new BaseClass(); SubClass.prototype.constructor = SubClass; function SubClass() { alert( this.publicProperty ); // This works perfectly well alert( this.privateProperty ); // This doesn't work, because the property is not inherited } ``` How can I achieve a class-like simulation, like in other oop-languages (eg. C++) where I can inherit private (protected) properties? Thank you, David Schreiber

Original source

Related problems