ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript プリミティブは実際にはオブジェクトですか?

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-17 06:56:031054ブラウズ

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 オブジェクトの substring() メソッドを呼び出します。
  3. String オブジェクトを破棄します。
  4. 結果を返しますstring.

プリミティブにプロパティを割り当てようとしています

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

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

関数一方、オブジェクト

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

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

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

以上がJavascript プリミティブは実際にはオブジェクトですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。