"В 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 ? Я что-то пропустил? Спасибо.
Square()вызыватьRectangle(), а неShape()? - person nnnnnn   schedule 15.05.2013Squareявляется подклассомShape, а не подклассомRectangle(?) - person DaGLiMiOuX   schedule 15.05.2013Retangle.prototype = new Shape()не проще, чемObject.create()? - person Ja͢ck   schedule 15.05.2013callпросто вызываетconstructor, это не имеет значения для объектаprototype. Кстати, обычно цепочка наследования всегда связана сprototypeобъекта.constructorиспользуется только для построения созданного объекта. - person Joe.wang   schedule 15.05.2013Superclass - Shape() => Subclass - Rectangle() => Subclass of a subclass - Square()? - person DaGLiMiOuX   schedule 15.05.2013