Когда вы объявляете свойство с помощью this
внутри функции конструктора, оно привязывается к каждому объекту этого конструктора.
Когда вы объявляете свойство в прототипе этой функции конструктора, оно остается там, и все объекты этого конструктора ссылаются на него.Если у вас есть свойство с одинаковым именем в объекте и в цепочке прототипов, свойство объекта скрывает свойство в прототипе.
Подумайте, как свойство оценивается в цепочке прототипов.что может прояснить ситуацию.
CodeA:
ninjaA.swung
1. Is swung a property of the current object - No
2. Is swung a property of the current object's prototype - Yes
2.1. Return it
CodeB:
ninjaA.swung
1. Is swung a property of the current object? - Yes
1.1 Return it
В коде B,он никогда не попадет в собственность по прототипу.