javascript object - オブジェクト対プリミティブ




delete immutable (3)

Javaの観点から:

  1. プリミティブは他のデータ型で構成されていません。 オブジェクトとして、そして一般的にどこにあるのか。
  2. プリミティブは値によって渡されます。つまり、プリミティブ自体のコピーが渡されます。 オブジェクトの場合、オブジェクト自体ではなく、参照のコピーが渡されます。
  3. プリミティブは独立したデータ型です。つまり、それらの階層/スーパークラスは存在しません。 すべてのオブジェクトは、クラス "オブジェクト"の子孫ですが。
  4. すべてのオブジェクトには、Objectクラス(toString()、clone()、wait()、notify()、notifyAll()など)から継承する、いくつかのデフォルトメソッドがあります。 プリミティブには、それ自体に関連するメソッドはありません。
  5. プリミティブは不変なので、特別な注意を払わずにそのまま使用することができます。 オブジェクトの場合、特別な注意が必要ですが、デフォルトでは変更できません。
  6. オブジェクトでは、浅いと深いの2種類のコピーがあります。 それらの間には大きな違いがあります。 その選択は、どのように使用するかによって異なります。 プリミティブでは、そのような違いはなく、すべてデフォルトでディープコピーのみです。

最近、インタビュアーがオブジェクトとプリミティブの違いを定義するよう求めました。 すべての言語がプリミティブで始まると考えると、奇妙な質問のように思えます。 あなたはこの質問にどう答えましたか?

また、このインタビューはフロントエンドの開発ポジションのためのものだったので、彼が言及していた言語(私が想定している)はJavaScriptだったことにも注意してください。


プリミティブは、他のデータ型で構成されていないデータ型であり、それ以上分解することはできません。 それはプログラミングシナリオの原子のようなものです。 原子は物質の基本単位であり、それから派生するものは何もないので、私は原子を言う。

int 、Cのintを小さなデータ型に分解することはできません。 他方、オブジェクトは、複数のプリミティブ型からなる分子と考えることができる。 たとえば、 stringはC ++標準ライブラリの一部として提供されます。 しかし、それはオブジェクトであり、内部的に小さなデータ型で構成され、メソッドを含んでいます。

すべてのオブジェクト指向言語がクラスベースではないことに注意することが重要です(例:Javascript)。クラスをJavascriptで定義することはできません。したがって、オブジェクトはここではかなり異なっています。 Javascriptのすべてがオブジェクト(Rubyも)ですが、Numberオブジェクトは実際には内部プリミティブのラッパーです。


"var"変数を使用しないと、値を設定するときしか定義できません。 例:

my_var;

グローバルスコープその他のスコープでは機能しません。 それは次のような価値があるべきです:

my_var = "value";

一方、あなたはvaiableのように定義することができます。

var my_var;

その値はundefined (その値はnullではなく、興味深いことにnullと等しくありません)。







javascript oop object primitive