JavaScriptの継承方法を詳しく解説(2)

零到壹度
リリース: 2018-03-22 14:24:21
オリジナル
977 人が閲覧しました

この記事は、クラス拡張を実装するためのいくつかのツール関数を作成することから始めます。各ユーティリティ関数は、クラスを作成する特定の方法 (習慣) を対象としています。この記事では、コンストラクター メソッドに従ってクラスを作成します。属性 (フィールド) とメソッドはすべてこれに依存します。親クラスとサブクラスとしてそれぞれ以下のクラスが用意されています。

/

/  父类Person
function Person(nationality) {
    this.nationality = nationality;
    this.setNationality = function(n) {this.nationality=n;};
    this.getNationality = function() {return this.nationality;};
}
// 子类Man
    function Man(name) {
    this.name = name;
    this.setName = function(n){this.name=n;};
    this.getName = function(){return this.name;};
}
ログイン後にコピー

1、ツール関数1を継承

/**
 * @param {Function} subCls 子类
 * @param {Function} superCls 父类
 * @param {Object} param 父类构造参数
 */
function extend(subCls, superCls, param) {
superCls.call(subCls.prototype, param);
}
ログイン後にコピー

次の

extend(Man, Person, 'China');
var m = new Man('jack');
console.log(m.nationality);//China
console.log(m.setNationality('Japan'));
console.log(m.getNationality('Japan'));//Japan
ログイン後にコピー

を使用します。出力は、ManがPersonの属性とすべてのメソッドを継承することを示しています。この継承方法は Java とは大きく異なります

class Animal {
int legs;
Animal(int l) {
legs = l;
}
int getLegs() {
return legs;
}
}
public class Person extends Animal{
//属性(字段)
String name;
//构造方法(函数)
Person(int legs, String name) {
super(legs);//调用父类构造器
this.name = name;
}
//方法
String getName() {
return this.name;
}
public static void main(String[] args) {
Person p = new Person(2,"jack");
System.out.println(p.legs);
}
}
ログイン後にコピー

Java では、サブクラス person が自身の構築メソッド内で親クラス構築メソッド super(legs) を呼び出し、オブジェクト作成時に親クラス構築パラメータ Legs:2 を直接渡します。入場するときは、名前:jack だけを渡さないでください。上記の JavaScript 継承では、新規作成時ではなく、拡張時に親クラス構築パラメータ (extend 関数の 3 番目のパラメータ) を渡します。 人員を配置するときは、親クラスの構築パラメータを渡します。さて、Java をシミュレートして extend を実装します。ここでは、親クラスの参照が巧みにサブクラスに一時的に保存されています。

2. ツール関数 2 を継承する

/**
 * @param {Function} subCls
 * @param {Function} superCls
 */
function extend(subCls, superCls) {
subCls.supr = superCls;
}
ログイン後にコピー

または、親クラスとして Person を使用してサブクラス Woman

function Woman(nationality, name) {
Woman.supr.call(this, nationality);//和java有点类似哦,在子类中调用父类构造器
this.name = name;
this.setName = function(n){this.name=n;};
this.getName = function(){return this.name;};
}
extend(Woman, Person);
ログイン後にコピー

最後に、オブジェクトを作成する方法は Java と似ています。つまり、新しい場合は親です。クラスも同時に追加され、構築パラメータ(国籍:日本)が渡されます。

りー

以上がJavaScriptの継承方法を詳しく解説(2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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