面接-まとめ-予測-JS

3042 ワード

JavaScriptにはどのタイプのデータがありますか?nullとundefinedを説明して、元のデータの種類と引用データの種類をはっきり説明します.例えば、1とNumber(1)の違いを説明します.
データの種類:文字列、数字、ブール、配列、オブジェクト、Null、UdefinedUndefined , undefined。 , undefined。Null , nullnull , 。基本データタイプは簡単なデータセグメントを指し、参照データタイプは複数の値からなるオブジェクトを意味します.
参照タイプデータ:
オブジェクトタイプのObject typeです.例えば、Object、Aray、Funct、Dataなどです.
javascriptの参照データタイプは、ヒープメモリに保存されているオブジェクトです.
他の言語と違って、ヒープメモリ空間の位置と操作ヒープメモリ空間に直接アクセスしてはいけません.スタック内のオブジェクトの参照アドレスのみを操作できます.
したがって、参照タイプのデータは、スタックメモリに保存されています.実際には、スタックメモリの参照先です.この参照アドレスによって、メモリに保存されているオブジェクトを素早く見つけることができます.
まとめの違い
a変数宣言時に異なるメモリ割り当て:
1)元の値:スタック(stack)に格納された簡単なデータセグメント、つまり、その値は直接変数アクセスの場所に格納されます.
これらの元のタイプが占有する空間は固定されているので、彼らをより小さなメモリ領域–スタックに保存することができる.このように、変数の迅速な検索に便利な値が格納されます.
2)参照値:ヒープに格納されているオブジェクト、すなわち変数に格納されている値はポインタであり、記憶対象のメモリアドレスを指す.
     これは、参照値のサイズが変わるので、スタックに入れないと変数の検索速度が低下します.逆に、変数のスタック空間に置く値は、そのオブジェクトがスタックに格納されているアドレスである.
     アドレスのサイズは固定されていますので、スタックに格納します.変数の性能には負の影響はありません.
b 異なるメモリ割り当て機構も異なるアクセス機構をもたらした.
   
1)javascriptでは、ヒープメモリに保存されているオブジェクトに直接アクセスすることはできませんので、オブジェクトを訪問する際には、
まず得られたのはこの対象のメモリの中の住所です.そしてこの住所に従ってこの対象の中の値を獲得します.これは伝説の引用によって訪問します.
2)元のタイプの値は直接アクセスできます.
  
c変数のコピー時の違い
  
1)元の値:元の値を保存している変数を別の変数にコピーすると、元の値のコピーを新しい変数に割り当てます.その後、この2つの変数は完全に独立しています.彼らは同じvalueを持っているだけです.
2)参照値:オブジェクトのメモリアドレスが保存されている変数を他の変数にコピーすると、このメモリアドレスは新しい変数に割り当てられます.
つまり、この二つの変数はメモリの中の同じ対象を指しています.彼らの中のいずれかの変更は他の体に反映されます.
(ここで理解したいのは、オブジェクトをコピーする時に、メモリの中で同じオブジェクトに生まれ変わることはないです.このオブジェクトを指すポインタを保存する変数がもう一つ増えただけです.)ポインタが一つ増えました
 
d パラメータ伝達の違い(実際のパラメータをイメージにコピーする過程)
  
まず、ECMAScriptのすべての関数のパラメータは値によって伝達されることを明確にします.
しかし、なぜ元のタイプと引用タイプの値についてはまだ違いがあるのですか?メモリの割り当ての違いのためではないです. 
1)元の値:変数内の値をパラメータに渡すだけで、その後のパラメータとこの変数は互いに影響しません.
2)参照値:対象変数の中の値はこの対象のメモリの中のメモリアドレスです.この点は常に心に銘記してください.
したがって、このメモリアドレスは、関数内部のこのパラメータの修正が外部に反映される理由で、同じオブジェクトを指すためです.
 プロトタイプとは何ですか?プロトタイプの理解は、いつプロトタイプを使いますか?
プロトタイプの属性は、オブジェクトに属性と方法を追加する能力を持っています.
javascriptでは、プロトタイプも対象であり、プロトタイプによってオブジェクトの属性継承が可能であり、javascriptのオブジェクトにはプロタイプの内部属性が含まれています.この属性に対応するものがプロトタイプです.javascriptのプロトタイプオブジェクトには、この属性はプロトタイプに向けられたすべてのインスタンスを作成するコンストラクタ属性も含まれています.
原型チェーン
実際、jsは完全に「プロトタイプ」モードで継承されています.
上記で原型の対象を言いました.プロト、プロトタイプ、コンストラをかき集めます.
  • プロト:実はプロトタイプのチェーンの針です!
  • プロトタイプ:これは原型の対象を指すと言っていましたが
  • constructor:各プロトタイプのオブジェクトにはコンストラクタ
  • 1、Objectは、多くのnewの例としての基質function Object(){[native code]]である.
    2、Functionは、多くのfunctionの関数として、ベースのfunction Function(){[native code]]である.
    3、コンストラクタのプロト(Funtions.prototypeとObject.prototypeを含む)は全部Function.prototypeを指す.
    4、原型の対象のプロトは全部Object.prototypeを指します.
    5、Object.prototype.protoはnullを指します.
    //prototype属性は、この属性が原型オブジェクトを指します.実はプロトタイプのオブジェクトは普通のオブジェクトです.中にはすべてのインスタンスオブジェクトが共有する属性と方法が保存されています.だから、私たちは共有したいのを原型の対象に置いて、共有する必要がない属性と方法を構造関数に存在させます.(無駄を避けるために、共有する対象と属性を原型オブジェクトに入れる)