В чем разница между словами «HTMLElement.prototype.someFunc =» и «HTMLElement.someFunc =»? - PullRequest
3 голосов
/ 27 августа 2011

Во многих случаях мне удалось зарегистрировать методы для всех HTMLE-элементов обоими способами.Так что мне любопытно, есть ли разница?Должен ли я предпочесть один метод перед другим?Каков был бы правильный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

с использованием прототипа делает функцию доступной для всех объектов в цепочке прототипов.Это в основном расширение класса.А другой просто добавляет свойство к текущему элементу.Но, как полагает Феликс, правильнее было бы вообще не делать этого.

0 голосов
/ 24 декабря 2013

Поскольку JavaScript является языком, основанным на прототипах, а не языком, основанным на классах, ключевое слово .prototype.variable или .__proto__.variable (для математики) используется для прямого доступа к прототипу (как и определение класса в классовых языках) и для его изменения. ВСЕ его экземпляры, даже если экземпляры были созданы до изменения прототипа. Принимая во внимание, что .variable без доступа к прототипу влияет только на указанный экземпляр.

Короче говоря, "HTMLElement.prototype.someFunc =" позволит ВСЕМ HTMLElement (и прототипам, которые наследуются от HTMLElement "обращаться к someFunc. А HTMLElement.someFunc следует использовать только для разрешения доступа конкретного экземпляра HTMLELement к someFunc.

...