ホームページ  >  記事  >  ウェブフロントエンド  >  js継承とは何ですか? js継承メソッド(コード付き)

js継承とは何ですか? js継承メソッド(コード付き)

不言
不言オリジナル
2018-08-11 10:52:064058ブラウズ

この記事の内容は、jsでオブジェクトを作成する方法についてです? jsでオブジェクトを作成する方法(コード付き)は、必要な友人が参考になれば幸いです。

js 継承

継承: サブクラスは親クラスのすべての関数を使用し、これらの関数を拡張できます。相続のプロセスは、一般から特殊へのプロセスです。

js クラスの継承

// 父类
var supperClass = function() {
  var id = 1;
  this.name = ['js'];
  this.superVal = function() {
    console.log('supreVal is true');
    console.log(id);
  }
}
// 父类添加共有方法
supperClass.prototype.getSupperVal = function () {
  return this.superVal();
}

// 子类
var subClass = function() {
  this.subVal = function() {
    console.log('this is subVal')
  }
}

// 继承父类
subClass.prototype = new supperClass();

// 子类添加共有方法
subClass.prototype.getsubVal = function() {
  return this.subVal();
}    

var sub = new subClass();

sub.getSupperVal();   //superValue is true
sub.getsubVal();     //this is subValue
console.log(sub.name);
sub.name.push('java');  //["javascript"]

var sub2 = new subClass();
console.log(sub2.name); //  ["js", "java"]

コードの最も核となる部分は、プロトタイプ __proto__ を親クラスのプロトタイプ オブジェクトにポイントする SubClass.prototype = new SuperClass() ;

js継承とは何ですか? js継承メソッド(コード付き)

です。このようにして、サブクラスは親クラスのパブリックおよび保護されたプロパティとメソッドにアクセスできるようになりますが、同時に、親クラスのプライベート プロパティとメソッドはサブクラスに継承されません。

短所

上記のコードの最後の段落のように、クラス継承メソッドを使用すると、親クラスのコンストラクターに[参照型]がある場合、それがすべてで共有されます。子クラスのインスタンスなので、子 クラスのインスタンスがこの参照型を変更すると、他のサブクラスのインスタンスに影響します。

js コンストラクターの継承

公式には、上記の欠点のため、コンストラクターの継承の中心的な考え方は、this のポインターを直接変更する SuperClass.call(this, id) です。これにより作成された属性とメソッドはサブクラスにコピーされます。これらは個別にコピーされるため、インスタンス化された各サブクラスは相互に影響しません。ただし、メモリの無駄が発生します

var parentClass = function(name, id) {
  this.name = name;
  this.id = id;
  this.getName = function(){
    console.log(this.name)
  }
}

parentClass.prototype.show = function( ) {
  console.log(this.id)
}

var childClass = function(name, id) {
  parentClass.call(this, name, id); 
}
var subClass = new childClass('zjj', 10);

js継承とは何ですか? js継承メソッド(コード付き)

まずはクラス継承とコンストラクタ継承のメリットとデメリットをまとめてみましょう

いくつかのjs継承スタイルを共有する
= クラス継承 コンストラクタ継承
核となるアイデア サブクラスのプロトタイプは、親クラスによってインスタンス化されたオブジェクトです SuperClass.call(this,id)
利点 サブクラスによってインスタンス化されたオブジェクトのプロパティとメソッドは親を指しますクラスのプロトタイプのインスタンス化されたサブクラスは、互いに影響を与えません。知識
jsクラス継承とプロトタイプ継承の詳細な説明_javascriptスキル

以上がjs継承とは何ですか? js継承メソッド(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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