関連:プロトタイプチェーン、プリミティブ、オブジェクトに関する混乱
Firebug コンソールで:
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints 'false'
これは印刷するべきだと思いますtrue
関連:プロトタイプチェーン、プリミティブ、オブジェクトに関する混乱
Firebug コンソールで:
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints 'false'
これは印刷するべきだと思いますtrue
a = 12
オブジェクトとまったく同じではないプリミティブ数を作成しNumber
ます。プリミティブは、プロパティ アクセスのためにオブジェクトに暗黙的にキャストされます。
a = 12; //a is a primitive
b = new Number(12); //b is an object
a.constructor.prototype.isPrototypeOf(a); //false because a is primitive
b.constructor.prototype.isPrototypeOf(b); //true because b is an object
ECMAScript仕様に従って:
isPrototypeOf
メソッドが引数Vで呼び出されると、次の手順が実行されます。
- Vがオブジェクトでない場合は、 を返し
false
ます。
プリミティブ数は、厳密に言えばオブジェクトではありません。
a = new Number(12);
a.constructor.prototype.isPrototypeOf(a) // prints 'true'
私は、これがどのようになっているのかを知っている理由を説明できるほど頭が良くありません。そして、はい、それは奇妙です。
さて、「12
はプリミティブでnew Number(12)
あり、オブジェクトである」と言えます。しかし、これをどのように説明しますか?
(12).toFixed(3); // "12.000"
どうやらどこかで JavaScript がプリミティブがオブジェクトである可能性があると判断しているようです。
この区別はなぜ存在するのでしょうか。2 つの形式をどのように変換しますか? これはパフォーマンスにどのように影響しますか? 私が答えを持っていないこの質問に関連するすべての質問。