ホームページ  >  記事  >  ウェブフロントエンド  >  JS継承の寄生継承

JS継承の寄生継承

小云云
小云云オリジナル
2018-03-07 10:50:582139ブラウズ

「寄生性遺伝」という言葉を聞くと、怖気づいてしまいがちですが、これは何ですか?安心してください、この記事ではこのJSでの継承方法を分かりやすく解説していきますので、皆さんのお役に立てれば幸いです。

1. 例

最初に次のように空の関数を定義します。仮パラメータはオリジナルです:

function createAnother(original){}

この関数で新しいオブジェクト クローンを作成します:

function createAnother(original){
    var clone=Object.create(original);
}

クローン オブジェクトにsayHi、sayHi 属性を追加します。関数:

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };
}

最後に、クローン オブジェクトを返します:

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };    return clone;
}

このようなオブジェクトがあるとします:

var person={
    name:'Nicholas',
    friends:['Shelby','Court','Van']
};

上記のオブジェクトを実際のパラメータとして関数に渡して実行します:

var anotherPerson=createAnother(person);
anotherPerson.sayHi();

操作の結果は次のとおりです: ' 「こんにちは」ウィンドウが表示されます。

2. 疑問点: このメソッドとプロトタイプ継承 Object.create(o) の違いは何ですか?

関数 createAnother に次の文があることがわかります:

var clone=Object.create(original);

これはプロトタイプの継承ではありませんか?
実際、プロトタイプの継承メソッドは実際に内部で使用されており、最終的に返されるオブジェクトはクローン オブジェクトです。ただし、プロトタイプ継承とは少し異なります。
プロトタイプ継承は元のオブジェクトのプロパティを継承し、新しいオブジェクトには新しい追加プロパティがありません。寄生継承は新しいオブジェクトに内部的にプロパティを追加できます。元のオブジェクトのプロパティに加えて、内部的に追加されたプロパティもあります。
上記の例では、プロトタイプの継承と比較して、追加の重要なステートメントがあります:

    clone.sayHi=function(){
        alert('hi');
    };

インスタンスを作成した後、インスタンスはこの属性を持ちます。

関連する推奨事項:

いくつかの js 継承スタイルの共有

js 継承 Base class_js のソースコード分析_オブジェクト指向

js 継承の実装コード_javascript スキル

以上がJS継承の寄生継承の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。