In JavaScript, how can I access a property of a superclass' instance? As an example, I'd like the "prop" of the superclass' instance set to "true", but this code creates and sets the "prop" of the subclass' instance to "true", leaving the superclass' instance's "prop" as false:
var SuperClass = function() {
    this.prop = true;
}
SuperClass.prototype.doStuff = function() { 
    if (this.prop) {
        console.log('SuperClass does A.');
    }
    else {
        console.log('SuperClass does B.');
    }
}
SuperClass.prototype.load = function() {
    this.prop = false;
}
SuperClass.prototype.setProp = function(val) {
    this.prop = val;
}
function SubClass() {
    SuperClass.call(this);
}
SubClass.prototype = Object.create(SuperClass.prototype);
SubClass.prototype.constructor = SubClass;
SubClass.prototype.doStuff = function() {
    SuperClass.prototype.doStuff();
    if (this.prop) {
        console.log('SubClass does A.');
    }
    else {
        console.log('SubClass does B.');
    }
}
SubClass.prototype.load = function() {
    SuperClass.prototype.load();
}
var anObject = new SubClass();
anObject.load();
anObject.setProp(true);
anObject.doStuff();
Currently, the output is "SuperClass does B. SubClass does A.", which is not the desired result. How do I properly set the value of "prop" so that they both do "A"? I'm not trying to create a new property in the subclass' instance, I want to access the existing property in the superclass' instance.
Thanks!
Additionally, can you access a superclass' instance's properties from a subclass' constructor? Or does the subclass need to be instantiated first?
SubClass.prototype.doStuff = function() {
    SuperClass.prototype.doStuff();
You aren't giving the super class any context, so the function isn't acting on the current object (i.e. this will be wrong).
Instead try:
SubClass.prototype.doStuff = function() {
    SuperClass.prototype.doStuff.call(this);
This gives me the desired output:
SuperClass does A.
SubClass does A.
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With