JavaScript_javascript スキルにおけるプロトタイプの継承に関するいくつかの考え
まず、従来の継承コードの一部を見てみましょう:
//定義スーパークラス
function Father(){
this.name = "Father";
}
Father.prototype.theSuperValue = ["NO1","NO2"]; 🎜>//定義サブクラス
function Child(){
}
//継承を実装
Child.prototype = new Father();
//共有配列
Child を変更する.prototype.theSuperValue.push("Modify");
//サブクラスインスタンスを作成します
var theChild = new Child(); //["NO1" ,"NO2", "変更"]
//親クラスのインスタンスを作成します
var theFather = new Father();
console.log(theFather.theSuperValue); //["NO1"," NO2","Modify" ]
上記のコードで、「赤い」コードに注目します。サブクラス Child のプロトタイプ オブジェクトは、親クラス Father (new Father( )) ここでは、Father() オブジェクトの新しい TheSuperValue 属性を呼び出します。新しい Father() オブジェクトにはそのような属性がないため (name 属性のみ)、プロトタイプ オブジェクト (Father) までのプロトタイプ チェーンに沿って検索されます。 .prototype)を見つけると、それは配列であることがわかり、このとき、この配列に「modification」という文字列を追加します。
その後、新しい Child インスタンス オブジェクト theChild を作成しました。theChild が SuperValue 属性を呼び出すと、最初はそれ自体にこの属性がないため、そのプロトタイプ オブジェクト (新しい Father) に移動してそれを見つけます。残念ながら、ここにはそのようなものはありません。では、 new Father() のプロトタイプに行き、それを見つけます。この配列は Father.prototype で見つかり、["NO1", "NO2" であることがわかりました。 、 "修正する"]。
次に、Father インスタンス オブジェクト theFather を作成しました。上記のように、Father.prototype にこの参照型配列 ["NO1", "NO2", "Modify"] が見つかりました。 (もちろん、配列はすべて参照型です!)
上記の説明を通じて、プロトタイプ チェーンの概念をすでに理解している友人は、実際、私も同様のことを考えます。例:
this.name = "Father";
Father.prototype.theSuperValue = ["NO1", "NO2"]
// サブクラスを定義します
function Child() {
}
//継承を実装します
Child.prototype = new Father();
//共有配列を変更します
Child.prototype.theSuperValue = ["コードをカバーする"]
//サブクラスのインスタンスを作成します
var theChild = new Child();
console.log(theChild.theSuperValue);
//親クラスのインスタンスを作成します
var theFather = new Father() ;
console.log(theFather.theSuperValue);
上記のコードとの違いを見てみましょう。前のコードは特別な紫色で表示されています。小さな違いですが、結果は「大きな」変更になっています。以下のスクリーンショットを参照してください:
なぜこれが大きな変化だと言えるのかというと、「パブリック属性の再利用」から「パブリック属性を上書きして独自の固有属性を作成する」に移行したからです。ここで説明するために配列を使用しています。実際、2 番目のケースは Function でよく使用され、サブクラスのメソッドを使用して親クラスのメソッドをオーバーライドします。
しかし、新しい親クラスのインスタンス theFather オブジェクトを作成し、そのオブジェクトの SuperValue プロパティを呼び出すと、そのオブジェクトにはそのようなプロパティがないことがわかります。これはなぜでしょうか。ここで説明したのは、Father クラスではなく、Father オブジェクト new Father(); であるため、Fater() コンストラクターを通じて作成された新しいオブジェクト theFather には、新しく作成された属性は含まれていません。プロトタイプ チェーンを遡ると、最初に定義した配列である Father.prototype にそれが見つかりました。
上記の 2 つの例を通して、JS のプロトタイプによって提供される継承関数を使用するとき、特にサブオブジェクトを使用してプロトタイプのメソッドとオブジェクトを操作するときは、「=」記号の割り当てと参照呼び出しが 2 つあることに注意してください。まったく異なる結果をもたらすため、異なる操作を実行します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull

JavaScriptはPowerPointで実行でき、外部JavaScriptファイルを呼び出したり、VBAを介してHTMLファイルを埋め込んだりすることで実装できます。 1. VBAを使用してJavaScriptファイルを呼び出すには、マクロを有効にし、VBAプログラミングの知識を持つ必要があります。 2。JavaScriptを含むHTMLファイルを埋め込みます。これは、シンプルで使いやすいが、セキュリティ制限の対象となります。利点には、拡張機能と柔軟性が含まれますが、欠点にはセキュリティ、互換性、複雑さが含まれます。実際には、セキュリティ、互換性、パフォーマンス、ユーザーエクスペリエンスに注意を払う必要があります。
