JavaScript プリミティブとオブジェクト: 概念の明確化
「JavaScript のほとんどすべてがオブジェクトである」という一般的な認識にもかかわらず、すべてがオブジェクトであるわけではありません。言語内のエンティティはこの定義に従います。プリミティブとオブジェクトのこの区別は明確にする必要があります。
プリミティブ
オブジェクトとは対照的に、プリミティブは基本的な形式で存在する不変の値です。これらにはメソッドとプロパティがなく、
Object などのデータ型が含まれます。ラッパー
プリミティブには対応するオブジェクト ラッパーがあります(文字列、数値、ブール値) メソッドとプロパティを提供します。ただし、プリミティブ自体はオブジェクトではありません。プリミティブのプロパティを操作するために、JavaScript は操作のラッパー オブジェクトを暗黙的に作成します。
文字列を使用した例
以下のコード スニペットを考えてみましょう:
var s = "foo"; var sub = s.substring(1, 2); // sub is now the string "o"
JavaScript は内部で次の処理を実行します手順:
プリミティブにプロパティを割り当てようとしています
そのようなプロパティは一時的なラッパー オブジェクトに関連付けられるため、プリミティブにプロパティを割り当てることは事実上不可能です。プリミティブ自体ではありません:
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 サイトの他の関連記事を参照してください。