Если вы хотите знать, как объекты, функции, «классы» и наследование в JavaScript работе, вы должны смотреть на это видео:
The Definitive Guide к объектно-ориентированному JavaScript:http://youtu.be/PMfcsYzj-9M
Это лучшее объяснение объектной ориентации в JS, которое я когда-либо видел.
В вашем случае происходит следующее:
При создании new Ninja()
, вы создаете новый пустой объект ({}
) со свойством прототипа, который указывает на прототип функций игровая. Тогда функция Ninja будет вызываться как конструктор для вашего вновь созданного объекта. Он создает функцию swingSword и делает ее методом вашего объекта.
swingFire функция не быть назначен на свой созданный объект, потому что это метод самой функции, а не его прототип. Функции также являются объектами, поэтому они могут иметь свойства.
Если объект не имеет определенного свойства или метода, он рассматривает его прототип. Если прототип имеет указанное свойство/метод, он использует его вместо этого. Это означает, что если вы дадите прототип методу, каждый его объект может также использовать этот метод. Вот почему вы назначаете методы прототипу функции.
Снова: Посмотрите видео, и вы поймете это объяснение.
Потому что вы должны использовать 'prototype' с классами для добавления новых методов/членов' Ninja.prototype.swingFire = function() '. Вы можете использовать прямое назначение для объектных литералов – devnull69
@ devnull69 OP может использовать то, что у них есть, но им нужно будет получить к нему доступ, как 'Ninja.swingFire()', и я уверен, что они не хотят этого делать (один, централизованный метод) – Ian
Да, предоставлено ... – devnull69