Ключевое слово new
изменяет контекст, в котором выполняется эта функция, и возвращает указатель на этот контекст.
Если вы не используете ключевое слово new
, контекст, под которым работает функция Vehicle()
, представляет собой тот же контекст, из которого вы вызываете функцию Vehicle
. Ключевое слово this
будет ссылаться на один и тот же контекст. Когда вы используете new Vehicle()
, создается новый контекст, поэтому ключевое слово this
внутри функции ссылается на новый контекст. То, что вы получаете взамен, - это вновь созданный контекст.