新しい用途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システムにスーパーセットをインストールする手順
SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...
binlog は、MySQL のすべての DML 操作を記録するバイナリ ログ ファイルです。 bi...
コンテンツ属性は通常、::before および ::after 疑似要素で使用され、疑似要素のコンテ...
多くのウェブサイトでは、ユーザーが簡単に検索したり他のページに移動したりできるように、上部にナビゲー...
背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...
概要港とは何ですか?英語の単語の意味は「港」です。 Harborはコンテナ(貨物)を保管するために使...
目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...
apache: ポートに基づいて仮想ホストを作成する仮想ホスト(a、b、c)の作成を例に挙げます1)...
チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...
<br />このタグは、さらにテキストを入力できる複数行のテキスト フィールドを作成する...
インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...
この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...
Traceroute を使用すると、情報がコンピュータからインターネットの反対側のホストまでたどるパ...
1. グリッドレイアウト(グリッド): Web ページをグリッドに分割し、さまざまなグリッドを組み合...
マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...