新しい用途new の機能は、コンストラクターを通じてインスタンス オブジェクトを作成することです。インスタンス、プロトタイプ、コンストラクターの関係は次の図に示されています。 まずはまとめましょう
詳細な説明新しい操作を実行すると、次の手順が順番に実行されます。 1. 空のオブジェクトを作成する
obj = {} とします 2. 空のオブジェクトの内部プロパティ__proto__がコンストラクタのプロトタイププロパティに割り当てられます。
関数Foo(num) { this.number = 数値 } obj.__proto__ = Foo.prototype 3. コンストラクタのthisを空のオブジェクトにポイントする
Foo.call(obj, 1) 4. コンストラクタ内のコードを実行する
5. 新しいオブジェクトを返す
新しいオペレータのエミュレーション次の myNew 関数は、new 演算子の動作をシミュレートします。 関数 myNew(func, ...args) { obj = {} とします obj.__proto__ = func.prototype res = func.apply(obj, args) とします。 res インスタンスオブオブジェクトを返します? res : obj } 関数Foo(num) { this.number = 数値 } foo1 = myNew(Foo, 1) とします。 console.log(foo1 instanceof Foo) // true console.log(foo1.number) // 1 foo2 = new Foo(2) とします。 console.log(foo2 instanceof Foo) // true console.log(foo2.number) // 2 上記のinstanceof演算子は、コンストラクタの戻り値がObjectのインスタンスであるかどうか、つまり参照型の値であるかどうかを判断するために使用されます。これは、すべての参照型の値がObjectのインスタンスであり、Objectがすべての参照型値の基本型であるためです。 さて、JavaScript の new 演算子の原理に関するこの記事はこれで終わりです。JS の new 演算子の原理に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Ubuntuのpython3でvenvを使用して仮想環境を作成する
>>: Windows10システムにスーパーセットをインストールする手順
#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...
序文最近、花火アニメーションを作成しました。花火が散るアニメーションです。アニメーションの実装中、花...
取引の実施REDO ログはトランザクションの永続性を保証し、UNDO ログはトランザクションのロール...
1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...
質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...
1. コマンドの紹介chkconfig コマンドは、システム サービスの実行レベル情報を更新および照...
CSS Houdini は、CSS 分野における最もエキサイティングなイノベーションとして知られてい...
MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows ...
最新の Ubuntu Server バージョンを使用している場合、ようこそメッセージに、Ubuntu...
いくつかの記事を読んだ後、ようやく MySQL で row_number() ソートを実装する方法が...
適切に機能するテーブル プロパティ設定:コードをコピーコードは次のとおりです。 <テーブル セ...
目次インストール構成よくある間違い事前テスト作業依存関係の扱いインスタンスとDOMを生成する要約する...
目次1. HTTP範囲リクエスト1.1 範囲構文2. 大きなファイルをダウンロードする方法2.1 補...
目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...
目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...