Вопросы про наследование
Здравствуйте!
Поясните пожалуйста по prototype Есть код: //Shape - superclass function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info("Shape moved."); }; // Rectangle - subclass function Rectangle() { Shape.call(this); //call super constructor. } Rectangle.prototype = Object.create(Shape.prototype); var rect = new Rectangle(); rect instanceof Rectangle //true. rect instanceof Shape //true. rect.move(); //Outputs, "Shape moved." 1. Для каких целей мы запихиваем move в prototype? Shape.prototype.move. У нас вроде new Shape нигде нет, что это нам даст? Если бы было new Shape, тогда у прототипа Shape был бы метод move, насколько я понял. И этот прототип видимо был бы безымянный объект, верно? 2. Не понимаю как работает Object.create в этой строке Rectangle.prototype = Object.create(Shape.prototype); Я понимаю, что в итоге Rectangle.prototype присваивается метод move из Shape.prototype. Но не совсем понимаю как. В учебнике написано, что Object.create создает пустой объект. Как у нас наследование тогда происходит? Rectangle<-пустой объект<-Shape. Можете попонятнее объяснить? И почему не написать Rectangle.prototype = Object.create(Shape); вместо Rectangle.prototype = Object.create(Shape.prototype); ??? Спасибо. |
|
Часовой пояс GMT +3, время: 07:19. |