フレームワークのソース コードを見ると、 1. isPrototypeOf() この機能を理解する鍵は、 ここでは原則を詳しく説明しません。簡単に言えば、次の 3 つのポイントがあります。
例 1、オブジェクト クラス インスタンス:o = 新しいオブジェクト(); console.log(Object.prototype.isPrototypeOf(o)); // 真
例 2: Human クラスを自分で定義します。関数Human() {} 人間 = 新しいHuman(); console.log(Human.prototype.isPrototypeOf(human)); // 真 この例は前の例と似ています。 例 3: オブジェクトのプロトタイプが人間のプロトタイプであるかどうかを確認しましょう。console.log(Object.prototype.isPrototypeOf(human)); // 真 なぜ?これはコードで説明した方がわかりやすいので、次の導出を参照してください。 // 人間のプロトタイプ (prototype) のプロトタイプ (__proto__) はオブジェクトのプロトタイプ (prototype) を指しているため Human.prototype.__proto__ === Object.prototype // そして、human (__proto__) のプロトタイプは Human (prototype) のプロトタイプを指しているので huamn.__proto__ === 人間.プロトタイプ // つまり、人間のオブジェクトのプロトタイプ (__proto__) は、オブジェクトのプロトタイプ (prototype) を指します。 huamn.__proto__.__proto__ === オブジェクト.prototype 人間の構造を見ると、これは簡単に理解できます。 では、 例 4: Object.prototype が組み込みクラスのプロトタイプであるかどうか: console.log(Object.prototype.isPrototypeOf(Number)); // 真 console.log(Object.prototype.isPrototypeOf(String)); // 真 console.log(Object.prototype.isPrototypeOf(Boolean)); // 真 console.log(Object.prototype.isPrototypeOf(Array)); // 真 console.log(Object.prototype.isPrototypeOf(Function)); // 真 当然、 例 5: オブジェクトは関数 (クラス) でもあります。また、 次の出力を参照してください。
2. instanceofとの違い
例えば: 関数Human() {} 人間 = 新しいHuman(); // human は Human のインスタンスなので、出力は true になります console.log(human instanceof Human); // true // すべてのクラスがObjectを継承しているので、結果もtrueを出力します console.log(human instanceof Object); // true // 人間のオブジェクトは配列ではないため、結果の出力は false になります console.log(human instanceof Array); // false 組み込みクラスの例をいくつか示します。 // [1,2,3]はArrayのインスタンスなので、出力はtrueになります console.log([1, 2, 3] 配列のインスタンス); // true // メソッドfunction(){}はFunctionのインスタンスなので、trueを出力します console.log(function(){} 関数のインスタンス);
したがって、私の理解では、これら 2 つの式の意味は同じですが、書き方が異なります。次の 2 つの出力は同じになるはずです。 console.log(B のインスタンス); console.log(B.prototype.isPrototypeOf(A)); まとめ 実際、 以下もご興味があるかもしれません:
|
<<: TinyEditorはシンプルで使いやすいHTML WYSIWYGエディタです
>>: MySql マスタースレーブレプリケーションメカニズムの包括的な分析
1. 事前に準備する便宜上、ここで 2 つのテーブルを作成し、そこにいくつかのデータを追加します。果...
この記事では、MySQL 5.7.24のインストールと設定のチュートリアルを参考までに紹介します。具...
CSS の開発履歴についてはここでは紹介しません。ブログを書いている理由の 1 つは、フロントエンド...
目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...
目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...
毎日の統計情報を取得するプロジェクトを実行する際、プロジェクト ログを分析する必要があります。要件の...
Linux 仮想マシン: VMware + Ubuntu 16.04.4 Windows ネイティブ...
この記事では、簡単な画像ドラッグ効果を実現するためのjsの具体的なコードを参考までに紹介します。具体...
目次1. カウンターの実装2. 成果を達成する1. カウンターの実装ページにカウンターを実装するだけ...
HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...
1. フィルター例: <!DOCTYPE html> <html lang=&qu...
Unix/Linux システムの nobody ユーザーとは何ですか? 1. Windows システ...
序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...
この記事では、最も単純なビデオ連射機能をシミュレートするデモを作成します。アイデア:再生する動画と同...
1: 速度と読み込み方法の違いdivとtableの違いは速度ではなく、読み込み方法です。速度はネット...