Functionの拡張(1):継承
2037 ワード
技術系の最初の文章として、何を書くかに悩んでいます.考えたら、対象に向かって書きましょう.いつもプログラマにとって、対象に向かって良い文章を書くことです.すみません、慣れました.良いコードを書くためのスタートです.
対象に向かう三つの特徴の中で一番重要なのは継承です.
現在の書き方を継承します.googleはあちこちにあります.私はもうここで繰り返しません.私のコードをそのままかけてください.
コア機能コードは以下の通りです.
先に親の宣言をします
私のコメントで見ることができます.構造的な方法があります.プライベートな方法があります.公有の方法がある
それから、私たちは相続クラスを宣言します.
もちろんこの書き方には限界があります.
例えば複数の相続を行うと最後の親しか見つけられない場合があります.
対象に向かう三つの特徴の中で一番重要なのは継承です.
現在の書き方を継承します.googleはあちこちにあります.私はもうここで繰り返しません.私のコードをそのままかけてください.
コア機能コードは以下の通りです.
Function.prototype.Implement = function (parentType) {
//
if (parentType != undefined && typeof (parentType) == "function") {
var temp = this.prototype;
this.prototype = new parentType();
for (var i in temp) {
this.prototype[i] = temp[i];
}
this.prototype.base = parentType.prototype;
}
}
コア機能ができました.jsで伝統的な継承が持つ特徴を試してみましょう.先に親の宣言をします
var parent= function () {
//constructor
}
parent.prototype = (function () {
//private
return {
//public
SomeVar:"I'm the first generation"
DoSomeStaff:function(){
console.write(this.SomeVar);
}
};
})();
ここで皆さんに紹介します.この種の声明方法.私のコメントで見ることができます.構造的な方法があります.プライベートな方法があります.公有の方法がある
それから、私たちは相続クラスを宣言します.
var child= function () {
//constructor
}
child.prototype = (function () {
//private
return {
SomeVar:"I'm the second generation"
DoSomeStaff:function(){
this.base.DoSomeStaff.call(this);//
}
};
})();
// child parent
// ?
child.Implement(parent)
そして私たちはテストを行います.var p1=new parent();
p1.DoSomeStaff()//output:I'm the first generation
var c1=new child();
c1.DoSomeStaff()//output:I'm the second generation
c1 instanceof parent//true
c1 instanceof child//true
私のこの継承の書き方の利点は、親のクラスを継承したり、呼び出したりする時に、より高度な言語の語順と文法に近いということです.コードを読む上で向上させます.もちろんこの書き方には限界があります.
例えば複数の相続を行うと最後の親しか見つけられない場合があります.