「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Javascript プリミティブは実際にはオブジェクトですか?

Javascript プリミティブは実際にはオブジェクトですか?

2024 年 11 月 15 日に公開
ブラウズ:246

Are Javascript Primitives Actually Objects?

JavaScript プリミティブとオブジェクト: 概念の明確化

「JavaScript のほとんどすべてがオブジェクトである」という一般的な認識にもかかわらず、すべてがオブジェクトであるわけではありません。言語内のエンティティはこの定義に従います。プリミティブとオブジェクトのこの区別は明確にする必要があります。

プリミティブ

オブジェクトとは対照的に、プリミティブは基本的な形式で存在する不変の値です。これらにはメソッドとプロパティがなく、次のようなデータ型が含まれます:

  • Strings
  • Numbers
  • Booleans

Objectラッパー

プリミティブには、メソッドとプロパティを提供する対応するオブジェクト ラッパー (文字列、数値、ブール値) があります。ただし、プリミティブ自体はオブジェクトではありません。プリミティブのプロパティを操作するために、JavaScript は操作のラッパー オブジェクトを暗黙的に作成します。

文字列を使用した例

以下のコード スニペットを考えてみましょう:

var s = "foo";
var sub = s.substring(1, 2); // sub is now the string "o"

JavaScript は内部的に次の手順を実行します:

  1. s から String ラッパー オブジェクトを作成します。
  2. サブ文字列を呼び出します( String オブジェクトの ) メソッド。
  3. String オブジェクトを破棄します。
  4. 結果の文字列を返します。

プリミティブへのプロパティの割り当てを試みています ]

プリミティブにプロパティを割り当てることは事実上不可能です。そのようなプロパティはプリミティブ自体ではなく一時ラッパー オブジェクトに関連付けられるためです。

var s = "foo";
s.bar = "cheese";
alert(s.bar); // undefined

Functions as Objects

Functions 一方、Object クラスから継承できる本物のオブジェクトです。これらはプロパティを持っており、他のオブジェクトと同様に操作できます:

function foo() {}
foo.bar = "tea";
alert(foo.bar); // tea

結論として、プリミティブはオブジェクトのような動作をするように見えますが、JavaScript の真のオブジェクトとは異なります。オブジェクト ラッパーではプリミティブ値との対話が可能ですが、プリミティブは不変のままです。ただし、関数は完全なオブジェクトであり、すべてのオブジェクト機能を実行できる完全なオブジェクトです。この理解により、JavaScript 言語におけるプリミティブとオブジェクトの関係が明確になります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3