DEEP JS DIVER#21で構築されたオブジェクト


🌕 JavaScriptオブジェクトの分類
1.標準として構築されたオブジェクト標準内蔵オブジェクト/ネイティブオブジェクト/グローバルオブジェクト
  • ECMAScript仕様で定義されているオブジェクトは、宣言することなくグローバル変数として参照できます.
  • 2.ホストオブジェクトホストオブジェクト
  • JavaScript実行環境で提供されるその他のオブジェクト
  • ブラウザ:DOM、BOM、FETCH、SVG等のWeb APIをホストオブジェクトとして提供する
  • .
  • Node.js: Node.js固有のAPIをホストオブジェクトとして提供する
  • 3.カスタムオブジェクトユーザー定義オブジェクト
  • ユーザ定義オブジェクト
  • 、組み込みオブジェクトではなく
    🌓 標準コンストラクションオブジェクト
    種類
    オブジェクト、String、Number、Boolean、Symbol、Date、Math、RegExp、Array、Map/WeakSet、WeakMap/WeakSet、Function、Promise、Reflect、Proxy、JSON、Erroなど40以上の標準構築オブジェクト.
    Math、Reflect、JSON以外のすべての標準コンストラクタオブジェクトは、インスタンスを作成できるコンストラクタオブジェクトです.コンストラクション関数オブジェクトの標準構築オブジェクトとしては、コンストラクション関数オブジェクトの標準構築オブジェクトではなく、プロトタイプメソッドと静的メソッドが提供されます.
    機能
    標準コンストラクタ関数を持つオブジェクトによって作成されたインスタンスのプロトタイプは、標準コンストラクタを持つオブジェクトのプロトタイプ構成にバインドされます.たとえば、オブジェクトStringをコンストラクション関数として呼び出すことで、作成されたStringインスタンスのプロトタイプはStringです.原型です.
    // String 생성자 함수에 의한 String 객체 생성
    const strObj = new String('Lee');
    
    // String 생성자 함수를 통해 생성한 strObj 객체의 프로토타입은 String.prototype이다.
    console.log(Object.getPrototypeOf(strObj) === String.prototype); // true
    
    // 따라서 string의 내장함수도 사용 가능하다.
    🌗 元の値とRapperオブジェクト
    文字列、数値、ブール値などの元の値が標準的に構築されたコンストラクション関数である理由は、オブジェクトのように句点記号(またはかっこ)を使用してアクセスすると、JavaScriptエンジンが元の値を一時的に関連するオブジェクトに変換するためです.つまり、元の値がオブジェクトのように使用されている場合、JavaScriptエンジンは、生成されたオブジェクトがPropertyにアクセスするか、メソッドを呼び出して元の値を返す暗黙的に関連付けられたオブジェクトを作成します.
    このように、オブジェクトのように文字列、数値、およびブール値にアクセスすると、生成された一時オブジェクトはパッケージオブジェクトと呼ばれます.
    Rapperオブジェクトになる過程を理解してください.Stringと同じ性質を持つタイプも同じです.
    // 1. 식별자 str은 문자열을 값으로 가지고 있다.
    const str = 'hello';
    
    // 2. 식별자 str은 암묵적으로 생성된 래퍼 객체를 가리킨다.
    // 식별자 str의 값 'hello'는 래퍼 객체인 [[StringData]] 내부 슬롯에 할당된다.
    // 래퍼 객체에 name 프로퍼티가 동적 추가된다.
    str.name = 'Lee';
    
    // 3. 식별자 str은 다시 원래의 문자열, 즉 래퍼 객체의 [[StringData]] 내부 슬록에 할당된 원시값을 갖는다.
    // 이때 2 에서 생성된 래퍼 객체는 아무도 참조하지 안흔ㄴ 상태이므로 가비지 컬렉션의 대상이 된다.
    
    // 4. 식별자 str은 새롭게 암묵적으로 생성된(2에서 생성된 래퍼 객체와는 다른) 래퍼 객체를 가리킨다.
    // 새롭게 생성된 래퍼 객체에는 name 프로퍼티가 존재하지 않는다.
    console.log(str.name)	// undefined
    
    // 5. 식별자 str은 다시 원래의 문자열, 즉 래퍼 객체의 [[StringData]] 내부 슬롯에 할당된 원시값을 갖는다.
    // 이때 4 에서 생성된 래퍼 객체는 아무도 참조하지 않는 상태이므로 가비지 컬렉션의 대상이 된다.
    console.log(typeof str, str);	// string hello;
    これにより、new演算子を使用してString、Number、Booleanコンストラクション関数を呼び出して文字列、数値、ブールインスタンスを作成する必要がなくなり、推奨されません.
    いいえ、こんなにまじめに読んでいます.これは暗い
    🏴 nullとundefinedのRapperオブジェクトは作成されません.したがってnullと未定義の値をオブジェクトとして使用すると、エラーが発生します.
    🌕 グローバルオブジェクト

  • グローバルオブジェクトグローバルオブジェクトは、コードが実行される前にJavaScriptエンジンによって任意のオブジェクトより先に作成された特殊なオブジェクトであり、任意のオブジェクトに属さないトップレベルのオブジェクトです.

  • JavaScript環境によって、グローバルオブジェクトの名前が異なります.ブラウザ環境では、ウィンドウ(self、this、frames)はグローバルオブジェクトを指しますが、ノード.js環境ではglobalはグローバルオブジェクトを指します.

  • グローバルオブジェクトはオブジェクトの最上位レベルのオブジェクトであり、階層内のオブジェクトに属さないすべてのバージョンです.これは、グローバルオブジェクト自体が継承関係の最上位オブジェクトではなく、任意のオブジェクトのPropertyではなく、Propertyとしてオブジェクト階層構造で標準的に構築されたオブジェクトとホストオブジェクトを持つことを意味します.
  • 以下に、グローバルオブジェクトの特徴を示します.
  • グローバルオブジェクトは、開発者が意図的に作成することはできません.つまり、グローバルオブジェクトを作成できるコンストラクション関数は提供されません.
  • グローバルオブジェクトのプロパティを参照する場合は、window(またはglobal)を省略できます.
    (これは、変数を平気で使用する理由ですか?付与文は含まれません)
  • グローバルオブジェクトは、Propertyとして、オブジェクト、String、Number、Boolean、Function、Array、RegExp、Date、Math、Promiseなどのすべての標準バージョンのオブジェクトを持つ.
  • javascript実行環境(ブラウザ環境またはNode.js環境)に従って、追加の構成と方法を提供します.ブラウザ環境は、DOM、BOM、Canvas、XMLHttpRequest、Fetch、RequestAnimationFrame、SVG、Webストレージ、Webコンポーネント、Web WorkerなどのクライアントWeb APIをホストオブジェクトとして提供し、ノードを提供する.js環境では、ノード.ホストオブジェクトとしてjs固有のAPIを提供します.
  • varキーワードで宣言されたグローバル変数と、宣言されていない変数に値を指定するデフォルトのグローバル変数を使用します.また、グローバル関数はグローバルオブジェクトのプロパティになります.
  • letまたはconstキーワードで宣言されるグローバル変数は、グローバルオブジェクトのpropertyではありません.ダイアログを呼び出すfooのように近づくことはできません.letまたはconstキーで宣言されたグローバル変数は、非表示の概念ブロック(グローバル集合環境の宣言環境レコード)に存在します.
  • ブラウザ環境のすべてのJavaScriptコードは、グローバルオブジェクトウィンドウを共有します.複数のスクリプトタグでJavaScriptコードを分離しても、グローバルオブジェクトの共有ウィンドウは変更されません.これは、分離されたJavaScriptコードがグローバルを共有することを意味します.
  • グローバルオブジェクトには、いくつかのpropertyとメソッドがあります.グローバルオブジェクトのプロパティおよびメソッドは、グローバルオブジェクトを指す識別子(ウィンドウまたはグローバル)を省略することによって参照/呼び出しできるため、グローバル変数およびグローバル関数として使用できます.これについて検討しましょう.
    🏴 globalThis
    GlobalThisはブラウザ環境とノードを提供しています.js環境では、グローバルオブジェクトを指す様々な識別子が統一されています.
    ビルダーグローバル構成
    構築されたグローバル・プロパティは、グローバル・オブジェクトのプロパティを表します.主にアプリケーションがグローバルに使用する値を指定します.

  • Infinity
    Infinity Propertyは無限大を表す数値Infinityを持つ.

  • NaN
    NaN Propertyは、数値ではないことを示す数値NaNを有する.Nan PropertyはNumberNanPropertyと同じ皮肉ですね.

  • undefined
    未定義のプロパティは、元のタイプで未定義の値です.
    当たり前だと思います.
  • 構築されたグローバル関数
  • eval
  • JavaScriptコードを表す文字列がパラメータとして渡されます.
  • 式の場合、実行時に文字列コードを計算して値を生成します.そうでない場合、文字列コードが実行されます.
  • 複数の文の場合、最後の結果値が返されます.
  • 実行時に既存のスキャンを動的に変更します.つまり、コード形式で実行されます.
  • eval関数の使用を禁止する必要があります.またお前か?時間がない~
  • isFinite
  • 正常有限数true、無限数false
  • 文字列の場合、数値はtrueに変換でき、false
  • に変換できません.
  • NaNもfalseを返します.
  • isNaN
  • でない場合は、数値タイプに変換してチェックします.いいえ、どうして数字を確認するために変換したのですか.
  • です.
  • parseFloat
  • で渡された文字列パラメータは、浮動小数点数(実数)解析で返されます.
  • の数値タイプを変換できない場合は、NANを返します.
  • parseInt
    この基数に基づいて
  • 文字列が返されます.数値を変換できない場合は、NANを返します.
  • encodeURI/decodeURI
  • の完全なURIを受け入れてエスケープ処理を行う.
    Velogハングルアドレスみたい(?)
  • encodeURIComponent/decodeURIComponent
  • 区分のURIを受けてエスケープ処理を行う.
    ex)クエリー値のみ、category=javascript&lang=ko#intro
  • デフォルトグローバル暗黙global
    var x = 10;
    
    function foo(){
      y = 20;
    }
    foo();
    
    console.log(x+y);
    上記のコードでは、識別子yは宣言されたグローバル変数のように動作する.これは、宣言されていない識別子に値を指定すると、その値がグローバルオブジェクトのプロパティになるためです.この現象を無名の戦いと呼ぶ.
    ただし、yには変数宣言はなく、グローバルオブジェクトのpropertyとして追加されただけです.したがってyは変数ではない.yは変数ではないので、変数エスケープは発生しません.
    したがって、yはdelete演算子で削除できます.グローバル変数はpropertyですが、delete演算子では削除できません.
    var x = 10;
    
    function foo(){
      y = 20;
      console.log(x + y);
    }
    
    foo();	// 30
    
    console.log(window.x);	// 10
    console.log(window.y);	// 20
    
    delete x;
    delete y;
    
    console.log(window.x);	// 10
    console.log(window.y);	// undefined
    今日、JavaScriptのコンストラクションオブジェクトについて説明します.
    もう聞かないでください.
    遅延を一時的に中断します.
    この间、私たちを爱してくれた友达に心から感谢します.私たちはもっと成长します.
    ありがとうございます.()(お辞儀)