" javascript では、すべてのオブジェクトはそれを作成したオブジェクトへの秘密のリンクを持っており、チェーンを形成しています。が見つかるか、ルート オブジェクトに到達するまで。」
以上の言葉は今でも真実だと思っているので、それを検証するためにいくつかのテストを行い、オブジェクトの関係を以下のように定義するつもりでした。見直してください。
コードは次のようになります。
//Shape - superclass
function Shape() {
this.x = 0;
this.y = 0;
};
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
alert('Shape move');
};
// Rectangle - subclass
function Rectangle() {
Shape.call(this); //call super constructor.
}
Rectangle.prototype.move = function(x, y) {
this.x += x;
this.y += y;
alert('Rectangle move');
};
// Square - subclass
function Square(){
Shape.call(this);
}
Rectangle.prototype = Object.create(Shape.prototype);
Square.prototype=Object.create(Rectangle.prototype);
var rect = new Rectangle();
var sq= new Square();
sq.x=1;
sq.y=1;
sq.move(1,1);
move
メソッドが に見つからないので、Square.prototype
JavaScript はチェーンに続く親オブジェクトでそれを見つけます。 で見つかると思っていましたがRectangle.prototype
、実際にはルートShape.prototype
で見つかったので、私が理解できないことのメソッドを呼び出す代わりに、sq.move(1,1)
実際に を呼び出すのはなぜですか? 私は何かを逃しましたか?ありがとう。Shape.prototype.move
move
Rectangle.prototype