【发布时间】:2016-09-27 22:36:29
【问题描述】:
我无法正确覆盖继承的对象,我想知道我是否可以在这里得到帮助。已经卡了 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
【问题讨论】:
-
你的
Person是一个工厂函数,不是经典的构造函数,它的作用域不关心属性。 -
您可能会在此线程stackoverflow.com/questions/12183011/… 中找到有用的答案。
标签: javascript inheritance prototypal-inheritance