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
Functions as Objects
Functions 一方、Object クラスから継承できる本物のオブジェクトです。これらはプロパティを持っており、他のオブジェクトと同様に操作できます:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
結論として、プリミティブはオブジェクトのような動作をするように見えますが、JavaScript の真のオブジェクトとは異なります。オブジェクト ラッパーではプリミティブ値との対話が可能ですが、プリミティブは不変のままです。ただし、関数は完全なオブジェクトであり、すべてのオブジェクト機能を実行できる完全なオブジェクトです。この理解により、JavaScript 言語におけるプリミティブとオブジェクトの関係が明確になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3