⚠ 前提条件:
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 ストレージエンジンのメモリ管理の詳細な説明
この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...
違い: 1. InnoDB はトランザクションをサポートしていますが、MyISAM はサポートしてい...
目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...
my.cnfは、MySQL の起動時に読み込まれる設定ファイルです。通常は MySQL インストー...
1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...
DIV+css構造 CSSレイアウトを学んでいますか?まだ純粋な CSS レイアウトを完全に習得でき...
カバーインデックスとは何ですか?クエリで使用されるすべてのフィールドを含むインデックスを作成すること...
グラデーションの背景色を作成するときは、 linear-gradient() 関数を使用して線形グラ...
k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...
質問質問 1: トランザクションをコミットするときに REDO ログをフラッシュすることによって発生...
1. 背景最近、友人が大規模なマップの読み込みが遅いという問題に遭遇しました。iServer のパ...
この記事では、次のような効果を持つ JS ページング効果の例を紹介します。クールだと思いませんか? ...
さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 パーレル # # https:/...
Web 開発では、次のような文字によく遭遇します: これは実際には HTML が...
innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...