title: Node.js: get the original string or number from 'this' in the function call
body: <p>When I wrote the codes as the below, I found that javascript will automatically convert the number or string caller (like 1 or 'str' in the codes) to object. And this perform will impact my code to compare the 'this' and the argument 'expectedValue'.</p>
  
  <p>So my questions are:</p>
  
  <ol>
  <li>how can I convert 'this' back to original number or string?</li>
  <li>if cannot find a way to convert back, how can I check 'this' and 'expectedValue' are equal?</li>
  </ol>
  
  <p><div class="snippet" data-lang="js" data-hide="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var mustEqual = function (expectedValue) {
    console.log("typeof this:"+(typeof this));
    console.log("typeof expectedValue:"+(typeof expectedValue));
    console.log("is equal: "+(this === expectedValue));
  }
  
  Object.defineProperty( Object.prototype, "mustEqual", {
      value: mustEqual, enumerable: false});
  Object.defineProperty( Number.prototype, "mustEqual", {
      value: mustEqual, enumerable: false});
  
  
  if (require.main === module) {
    (1).mustEqual(1);
    ('str').mustEqual('str');
  }</code></pre>
  </div>
  </div>
  </p>
  
  <p>The output result:</p>
  
  <pre><code>typeof this: object
  typeof expectedValue: number
  is equal: false
  typeof this: object
  typeof expectedValue: string
  is equal: false
  </code></pre>