new演算子 or リテラル

by yshrkn

JavaScript

// Nubmer型
var myNumber = 13;
var yourNumber = new Number(13);

console.log(typeof myNumber);
console.log(typeof yourNumber);

// Boolean型
var myBoolean = false;
var yourBoolean = new Boolean(false);

function isTrue(boolean) {
  return boolean ? true : false;
}

console.log(isTrue(myBoolean));
console.log(isTrue(yourBoolean));

/*
・new演算子によるインスタンス化と、リテラルによるプリミティブの作成における違いを説明してください。

A.
リテラルでプリミティブを作成できるのは、生成するプリミティブが、組み込みオブジェクトにある場合に限られる。
new演算子は、組み込みオブジェクトの他、ユーザが追加したオブジェクト等もインスタンス化可能。


・それぞれ、どのように使い分けるのが良いと思いますか?

A.
組み込みオブジェクトはリテラルの他、new演算子を用いてもプリミティブを作成できるが、「null以外のオブジェクトをtrueとする」というJSの仕様で、意図しない挙動をすることがある。※12行目付近

そのため、組み込みオブジェクトにnew演算子を用いるべきではない。
*/