JS嵌套继承
JS nested inheritance
我无法正确覆盖继承的对象,想知道我是否可以在这里得到帮助。已经卡了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
Using just 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()
。
此外,构造函数不应该 return 值;而是将值直接附加到 this
值。
我无法正确覆盖继承的对象,想知道我是否可以在这里得到帮助。已经卡了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
Using just 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()
。
此外,构造函数不应该 return 值;而是将值直接附加到 this
值。