JavaScript言語におけるポリモーフィズムとは何ですか

小云云
リリース: 2018-01-29 13:45:56
オリジナル
2412 人が閲覧しました

Java 言語は静的に型付けされた言語です。コードのコンパイル時に厳密な型チェックが行われるため、変数に異なる型の値を割り当てることはできません。この型チェックによりコードは厳格になりますが、Java は継承を渡すこともできます。ポリモーフィズム (実装継承とインターフェイス継承) を実現し、上方に変換してポリモーフィズムを実現できます。

ポリモーフィズムの実際の意味は、同じ操作を異なるオブジェクトに適用すると、異なる解釈と異なる実行結果が生成される可能性があるということです。 JavaScript の変数型は実行時に可変です。これは、JavaScript オブジェクトのポリモーフィズムが固有であることを意味します。

次の写真はそれを説明しています:

飼い主はニワトリとアヒルに同時に「鳴く」という指示を出します。ニワトリとアヒルは同時に鳴きますが、鳴き声は異なります。
JavaScript言語におけるポリモーフィズムとは何ですか

この例を示すためにコードを使用します:

従来のコードでは、ハードコーディングされたコードをスタックするために if else を使用することに慣れていますが、このオブジェクトが増加し続けると、コードが継続的に追加されることになります。コードの変更は常に非常に危険です。また、動物の種類が増えると、関数が積み重なって巨大な関数になるため、役に立ちません。メンテナンスへ。

var makeSound = function(animal) {
     if (animal instanceof Dog) {
        console.log('wanwan');
     } else if(animal instanceof Cat) {
        console.log('miaomiao');
     }
}

var Dog = function() {}
var Cat = function() {}
makeSound(new Dog());
makeSound(new Cat());
ログイン後にコピー

変更されたコードは次のとおりです:

 var makeSound = function(animal) {
     animal.sound();
}
var Dog = function() {}
Dog.prototype.sound = function(){
   console.log('wanwan');
}

var Cat = function() {}
Cat.prototype.sound = function() {
   console.log('miaomiao');
}
makeSound(new Dog());
makeSound(new Cat());
ログイン後にコピー

オブジェクトがリクエストに応答できない場合、そのリクエストをそのコンストラクターのプロトタイプに委任することを理解する方法。次のように、この原則はプロトタイプ継承の本質です。コード:

var obj = {name:'lin'};

var A = function() {};

A.prototype = obj;

var a = new A();
console.log ( a.name);

説明: オブジェクト a のすべての属性を調べても、属性名が見つかりません
name 属性を見つける要求は、オブジェクト a のコンストラクターのプロトタイプに委任され、a によって記録されます。 _proto_ は A.prototype を指します。
そして A.prototype はオブジェクト obj に設定されます
オブジェクト obj 内の name 属性を見つけて返します。

関連する推奨事項:

JavaScript 言語を学習するにはどうすればよいですか?学習する上で大切なこと、難しいことは何ですか?

JavaScript言語の構造に関する注意事項(1)_基礎知識

JavaScript言語の基本的な文法要件を詳しく解説_基礎知識


以上がJavaScript言語におけるポリモーフィズムとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート