JS嵌套继承



我无法正确覆盖继承的对象,想知道我是否可以在这里得到帮助。已经卡了3天了。

function Person() { 
    function getValue(){
        serviceArea();
    }
    function serviceArea() {
        alert('Old Location');
    }
    return {
        getValue: getValue,
        serviceArea: serviceArea
    }
}

然后

function Student() {};
Student.prototype = new Person();
Student.prototype.serviceArea = function() { alert('New Location'); };
var bobStu = new Student();

当我跑bobStu.serviceArea();时,我会'New Location',但是当我跑bobStu.getValue();时,我会得到'Old Location'

我正在将此bobStu.getValue();传递到一个需要调用被覆盖方法的方法,但我无法让它这样做。你能解释一下为什么getValue()打电话给老serviceArea()吗?以及如何正确地做到这一点?

我已经多次准备这篇文章,感觉它告诉我一些事情,但我太烧了,我无法得到它:(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#Namespace

仅使用 serviceArea() 仅指Person范围内定义的函数serviceArea

function Person() { 
    function getValue(){
        serviceArea();  // this...
    }
    // ...always refers to this, independent of the object you're constructing
    function serviceArea() {
        alert('Old Location');
    }
    // also note this:
    this.getValue = getValue;
    this.serviceArea = serviceArea;
}

如果要使用子类实现的serviceArea方法,请改用this.serviceArea()

此外,构造函数不应返回值;而是将值直接附加到this值。

最新更新