JavaScript では関数、文字列、数値はオブジェクトですか?
JavaScript はほとんどすべてのものをオブジェクトとして宣言するという評判が、特に初心者。オブジェクトとそのメソッドやプロパティが重要な役割を果たしているのは事実ですが、文字列、数値、関数などのプリミティブの動作は多少異なります。
プリミティブ値とオブジェクト
JavaScript では、プリミティブ値は不変であり、ドット表記ではアクセスできません。ただし、JavaScript は、プリミティブにオブジェクトのようなメソッドとプロパティを与えるラッパー オブジェクト (文字列、数値、およびブール値) を提供します。
ラッパー オブジェクト
ラッパー オブジェクトは背後で作成されます。プリミティブのプロパティにアクセスするときのシーン。たとえば、次のコードでは、
var s = "foo"; var sub = s.substring(1, 2);
JavaScript は String オブジェクトをサイレントに作成し、substring() メソッドを呼び出してから、そのオブジェクトを破棄します。サブ変数にはプリミティブ文字列 "o" が含まれています。
プリミティブにプロパティを割り当てられるように見えるかもしれませんが、これらの割り当ては実際にはすぐに破棄されるラッパー オブジェクトに対して実行されます。したがって、次の例に示すように、このようなプロパティを取得すると、未定義が生成されます。
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
オブジェクトとしての関数
プリミティブとは異なり、関数は継承する本格的なオブジェクトです。オブジェクトから。次のコードに見られるように、これらはプロパティを持つことができます:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
要約すると、JavaScript ではプリミティブには本質的にオブジェクト特性がありません。ただし、ラッパー オブジェクトはオブジェクトのような動作の表面を提供しますが、関数はプロパティやメソッドと対話できる真のオブジェクトです。この区別は、JavaScript の型システムを理解し、情報に基づいてコーディングの決定を行うために不可欠です。
以上が関数、文字列、数値は実際に JavaScript のオブジェクトのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。