1
我是JavaScript中OOP的新手。當我想要重寫某個方法時,我無法正確理解它。我在下面舉了一個我的問題的例子。此外,在http://jsfiddle.net/sRyQA/重寫javascript方法
function myGeometryObject(r, x, y){
this.r = r;
this.x = x;
this.y = y;
var OBJ = this;
this.returnArea = function(){
return 'wrong override';
}
}
function myRectangle(r, x, y){
myGeometryObject.call(this, r, x, y);
}
myRectangle.prototype = new myGeometryObject();
myRectangle.prototype.returnArea = function(){
return 'right override';//I want JS to use this method
}
var rectangle = new myRectangle(0, 5, 5);
alert(rectangle.returnArea());
另一種方式是覆蓋在'myRectangle'構造方法(申請後myGeometryObject構造函數的參數)。 http://jsfiddle.net/sRyQA/2/ – katspaugh
@Felix KLing MyRectangle.prototype.constructor = MyRectangle是做什麼的? – einstein
@ Woho87:它將原型的'constructor'屬性設置爲'MyRectangle'。這個屬性總是指出原型是原型的功能。試試:'function Foo(){}; console.dir(Foo.protoype);'。 –