пользовательские методы и полезность конструкторов и прототипов в web-dev - PullRequest
3 голосов
/ 10 марта 2012

хорошо, так что я знаю, что прототип используется для наследования, и в сочетании с функцией конструктора можно использовать для создания пользовательских методов.поэтому мой вопрос здесь состоит из двух частей: как создать методы для предварительно созданных объектов JavaScript, таких как целые числа, строки, массивы и т. д. *

* Другой вопрос, помимо создания моих собственных методов, в чем полезностьконструкторы / прототипы в повседневной веб-разработке (например, создание веб-сайтов), или это в большей степени относится к высокопроизводительной разработке, такой как создание веб-приложения или разработка с использованием новых технологий (например, html5 canvas или three.js).Сеть этого используется в повседневной ситуации.

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Вы можете добавить функции в прототип класса:

String.prototype.report_fish = function() { alert("a fish!"); };
"".report_fish();

Вы можете сделать это и с числами, хотя синтаксис для вызова немного отличается:

Number.prototype.report_fish = function() { alert("a fish!"); };
(0).report_fish();

Что касаетсяпочему вы делаете это, я лично считаю, что вам следует избегать делать это для встроенных объектов, где это возможно.(Постоянной проблемой, которую нужно обойти при создании многократно используемых библиотек Javascript, была и остается склонность людей переопределять и расширять прототип Object.)

1 голос
/ 10 марта 2012

Вот пример, который расширяет число:

Number.prototype.between = function(a, b) {
  return this >= a && this <= b
}
var num = 0;
if (num.between(0,0)) alert('is between')
else alert('not');

Несмотря на то, что я часто использую прототип, у меня еще не было веской причины использовать свойство constuctor, которое возвращает тип объекта. W3schools.com имеет хорошую иллюстрацию этого свойства на http://www.w3schools.com/jsref/jsref_constructor_math.asp

1 голос
/ 10 марта 2012

Чтобы создать метод Javascript для уже существующего объекта, вы можете просто добавить его к прототипу его конструктора:

String.prototype.firstLetter = function() { return this.charAt(0); }
var myStr = "Cool str!";
alert(myStr.firstLetter()); // 'C'

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

Кроме того, умение пользоваться инструментом обычно помогает избежать самоповреждений.=)

Если вам интересно, вы можете заглянуть в страницу Крокфорда или купить его книгу Javascript: The Good Parts.

Существует много путаницы, которую вы можете избежать, если познакомитесь с языком, и вам даже может понравиться этот язык и вы узнаете, что в нем можно сделать много полезного.

...