script - V8
2821 ワード
Javascript Engine
JAvascriptエンジンはjavascriptコードを実行するプログラム/インタフェースです.
JavaScriptのエンジンはブラウザだけでなく、異なる場所で実行できます.
代表的なのはGoogleのV 8エンジンMSのChakraエンジンMozillaのSpiderMonkeyなど.
その中でChrome Node典型的なV 8エンジンはjs、Electronなどを含む.
以下に示すJavaScriptエンジンはすべてV 8エンジンに基づいています.
V8
V 8エンジンはGoogleが開発したオープンソースエンジンで、C++言語で作成されています.
Just in timeコンパイラとして、コードの実行時に中間コード(バイトコードなど)は生成されません.
コンピュータの言語でマシンコードをコンパイルします.
hidden class
JavaScriptのオブジェクトの数は不明で、動的に追加および削除されます.
変形可能です.オブジェクトは複雑なデータ構造であり、オブジェクトを管理する方法は元の値(number,string...)である.
それに比べて各ブラウザは複雑で、JavaやC++などのクラスベースのオブジェクト向け言語では、
事前定義されたclassに基づいてオブジェクト(インスタンス)を作成し、オブジェクトを作成した後、classで事前定義された内容とは異なるフォーマットに変換することはできません.
ただし、クラスなしでオブジェクトを作成できます.
const 객체 = {a: 1, b: 2 c: 'c'};
作成後、Propertyとメソッドはいつでも作成または変換できます.使いやすく、class言語ベースのオブジェクトにアクセスするよりもコストがかかります.
したがって、V 8エンジンは、hidden classと呼ばれる方法を使用して、C++のオブジェクトへのアクセスを保証する.
非効率なオブジェクトのブラウズを回避するために、オブジェクトの作成時にhidden classというオブジェクトを作成します.
各オブジェクトのオフセット情報を格納します.非表示クラスには、次のフィーチャーがあります.
各オブジェクトには
参照するhidden class情報が追加されます.
let goyangyi = {};
以下のオブジェクトが生成される瞬間、V 8はGoyangyiに対するhidden class[A 1]を生成する.このとき[A 1]には何の情報もない.
let goyangyi = {};
goyangyi.food = 'fish';
propertyを作成した瞬間にhidden classが現れる[A 2].呉陽儀は『A 2』を教える.[A 1]にfood propertyを追加して参照
hidden classがA 1からA 2に変更されたことを示す情報が追加されます.
これを遷移と言います.
これらのプロシージャが連続的に発生すると、オブジェクトのhidden classループが作成されます.
新しいインスタンスを作成するたびに、定義済みhidden classループに沿って上に登り、同じオフセットを検索して使用します.
Inline caching
Reference
この問題について(script - V8), 我々は、より多くの情報をここで見つけました https://velog.io/@tsts_/Javascript-V8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol