Я немного запутался, как функционирует метод call
, когда мы используем его для установки this
с помощью конструктора базовых объектов. Вот пример конструктора базового объекта и метода call
, используемого для установки this
:
// Constructor, defines properties for a Sprite object
var Sprite = function(name) {
this.name = name;
this.x = 0;
this.y = 0;
this.v = 0;
return this;
}
var Ball = function(name, radius, elasticity) {
// Call the Sprite (i.e. base-object) constructor
Sprite.call(this, name);
// Define additional Ball specific properties
this.radius = radius;
this.elasticity = elasticity;
}
Что меня смущает, так это то, что мы нигде не храним и не устанавливаем это в функции Ball
к возвращаемому значению функции Sprint.call(this, name)
. Я подумал, что вам нужно установить this
что-то вроде этого внутри функции Ball
:
this = Sprint.call(this, name);
Почему нам не нужно это делать, а просто вызвать метод call
, без определения this
, как я показал выше?