title: Messing with this in prototype's method
body: <p>Ok, here's the situation:</p>
  
  <pre><code>var vowels = ['a', 'i', 'y', 'e', 'o', 'u'];
  String.prototype.isVowel = function () {
    return vowels.indexOf(this) !== -1;
  };
  
  alert('a'.isVowel());
  </code></pre>
  
  <p>It will alert 'false' since <code>this</code> references not <code>'a'</code> but its prototype. To make it work we need to make a little change.</p>
  
  <pre><code>String.prototype.isVowel = function () {
    return vowels.indexOf(this[0]) !== -1;
  };
  
  alert('a'.isVowel());
  </code></pre>
  
  <p>This will work since <code>String.prototype</code> contains all characters of original string. It's a hack actually and I don't like it.</p>
  
  <p>But what do we need to do to make this code work?</p>
  
  <pre><code>Number.prototype.is5 = function () { return this === 5; }
  
  alert((5).is5()); //will alert 'false'
  </code></pre>
  
  <p>Or we just don't need to touch prototypes?</p>