ホームページ >ウェブフロントエンド >jsチュートリアル >文字列と数値は本当に JavaScript のオブジェクトですか?
JavaScript オブジェクトの謎を解読する
JavaScript の領域では、オブジェクトの遍在性がしばしば疑問を引き起こします。配列と関数はオブジェクトのような動作を示しますが、「文字列」と「数値」の謎めいた性質を解明することは複雑になる可能性があります。
プリミティブ値のとらえどころのない性質
一般に信じられていることに反して、JavaScript のすべてがオブジェクトであるわけではありません。文字列、数値、ブール値などのコア要素は、不変の性質を特徴とするプリミティブとして分類されます。真のオブジェクトとは異なり、プリミティブにはメソッドやプロパティがありません。
オブジェクト性の幻想
JavaScript は、プリミティブをオブジェクトのように見せる巧妙なトリックを採用しています。プリミティブのプロパティ (例: s.substring(1, 2)) にアクセスしようとすると、JavaScript は必要なメソッドを保持するラッパー オブジェクト (例: String(s)) をシームレスに作成します。ただし、このラッパーは存続期間が短く、メソッドの実行が完了するとすぐに消えます。
証明: 到達不可能なプロパティ
この錯覚は、プロパティをプリミティブに割り当てるときに明らかになります。 、最終的には無駄であることがわかります。次のコードを考えてみましょう。
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
プリミティブ にプロパティを割り当てているにもかかわらず、それを取得しようとすると、未定義が返されます。これは、プロパティが一時的なラッパー オブジェクトにアタッチされており、メソッドの完了時に破棄されるためです。
関数: True オブジェクト
プリミティブとは対照的に、JavaScript 関数はオブジェクト プロトタイプから継承した正当なオブジェクト。これにより、プロパティを所有し、オブジェクトベースのメソッドを実行できるようになります。
関数でのプロパティの割り当て
関数は典型的なオブジェクトとして機能し、プロパティの割り当てと取得が可能になります。 :
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
JavaScript におけるプリミティブと正当なオブジェクトの区別を理解することで、 「ほぼすべてのものはオブジェクトである」という広く普及した概念を取り巻く混乱を払拭します。
以上が文字列と数値は本当に JavaScript のオブジェクトですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。