フレームワークのソース コードを見ると、 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 マスタースレーブレプリケーションメカニズムの包括的な分析
これは見落とされがちな問題かもしれません。まず、次の点を明確にする必要があります。 MySQL では...
目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...
この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...
目次1. 概要2. dockerを使用してTomcatをデプロイし、Skywalkingに接続する要...
CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...
Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...
すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...
1. 文字セットを確認する1. MYSQLデータベースサーバーとデータベースの文字セットを確認する方...
この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...
Vue プロジェクトで div ホイールのズームインとズームアウト、ドラッグ効果、キャンバス効果に似...
この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...
ボタン (input, button) を記述すると、IE では次のようになります。単語数が増えると...
1. 需要正しい Cookie 配信と SSO テストを確実に実行できるように、ローカル テスト ド...
docker コンテナを使用する場合、vim がインストールされていないことがあり、vim コマンド...
MySQLはインストール版と無料インストール版に分かれていますインストール版の拡張子はmsi、無料イ...