⚠ 前提条件:
1 新しいオペレータの紹介MDN ドキュメント: クラス Person { コンストラクタ(名前) { this.name = 名前; } } // カスタムオブジェクトタイプのインスタンスを作成する const person = new Person('Xiao Ming') // コンストラクタを使用して組み込みオブジェクトのインスタンスを作成する const date = new Date() newの役割:オブジェクトのインスタンスを作成する 2 新しいものは何をしましたか?上で、 new Person() を例に挙げてみましょう。これを実行すると、次のことが起こります。 空のシンプルなJSオブジェクトを作成する 定数オブジェクト = {} このオブジェクトに属性 obj.__proto__ = Person.プロトタイプ コンストラクタ Person.apply(オブジェクト) コンストラクタが明示的にオブジェクトを返さない場合は、新しく作成されたオブジェクト、つまり 3 新しい演算子の実装をシミュレートする上で述べたように、 const _new = 関数(コンストラクタ、...引数) { 定数オブジェクト = {} obj.__proto__ = コンストラクタ.prototype const res = コンストラクタ.apply(obj, args) // この手順については「補足」で詳しく説明します return res instanceof Object ? res : obj } コードは非常にシンプルで、上記の4つの手順に従って段階的に記述するだけです。 4 補足
この方法を使ってステップ1と2を組み合わせることができます const obj = Object.create(コンストラクタ.プロトタイプ) // const obj = {} と同等 obj.__proto__ = コンストラクタ.prototype ステップ4では、
関数Person() { ... 戻り値 1 } コンストラクタが明示的にオブジェクトを返す場合(例: この場合、 関数Person() { // 関数もオブジェクトです return function() {} } したがって、_new 関数の最後のコード行は次のようになります。 res インスタンスオブオブジェクトを返します? res : obj
class Animal { ...}_new(Animal) // エラーを報告します: クラスコンストラクタ Animal は 'new' なしでは呼び出せません // クラスは new を使用してのみ作成できます JS での new の手書き実装に関するこの記事はこれで終わりです。JS でのより関連性の高い new コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
目次背景分析するデータシミュレーション1. 従業員テーブルと部門テーブルの2つのテーブルを作成します...
Vue で SVG アイコンを導入する方法Vue で svg アイコンを導入する方法 1インストール...
特定のデータの一括更新処理において、特定のステータスが固定値に更新されるなど、更新するフィールドの値...
CSS画像結合技術1. 画像のステッチ画像ステッチング技術は、個々の画像を収集する技術です。画像の多...
GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...
日常業務において、フォームの検証は非常に一般的な設計要件です。ログイン ボックスや登録ボックス、アン...
1. MIME: 多目的インターネットメール拡張インペリアル カレッジ オブ コンピュータ オンラ...
この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...
以前の開発では、クラス、名前などの HTML のデフォルト属性を使用していました。 Huawei社の...
動作環境: MAC Docker バージョン: Docker version 17.12.0-ce,...
問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...
XML スキーマは、DTD に代わる XML ベースのものです。 XML スキーマは、DTD に代わ...
Zabbix サーバー環境プラットフォームZABBIX バージョン 4.4セントOS8 MySQL ...
質問: コンピュータを再起動した後、docker の mysql コンテナを再起動できません。原因が...
display:flex、justify-content: space-betweend を設定する...