javascript類の類比詳細解-大白話版
7439 ワード
転載は出典を明記してください.水車
もし間違いがあったら、指摘してください.ありがとうございます.
--------------本文分割線--------------
種類が抽象的すぎて、現実的なものを使って類比してみると、(もちろん一つでもいいです)機能のあるものをたくさん作っている機械(ここのものを対象としてもいいです)があります.例えばラジオはラジオがほしいです.まずラジオを作る機械があります.このマシンは私達の言っている種類です.
この時ラジオがありました.このラジオを使って、短波チャンネルを聞いてみたいです.
長波が聞きたいなら、使います.
他のどんな機能を使いたいですか?
一日後、姉も同じラジオがほしいです.それは簡単です.私の工場の中にラジオを専門に作る機械があります.何が怖いですか?彼女に一つあげます.
はい、姉もラジオを持っています.そして私のラジオの機能と同じです.長波も聴けますし、短波も聴けます.妹も一台ほしいです.newも一台お願いします.私の七番目のおじさんとおばさんは全部お願いします.
この時、父が来ました.ラジオも一つくださいと言いましたが、今のラジオの機能は私を満足させてくれません.私が欲しいラジオは必ず電話してください.あなたが作ってください.どうすればいいですか?父の命は違わないですよ.
まず分析します.1:ラジオを作る機械をもう一台作りましょう.ある機能(属性と方法)を全部加えてもいいです.でも、前の機械で作ったラジオは普通の機能が全部ありました.再構築は重複した感じがします.そして、工場にラジオをたくさん作る機械はちょっと混んでいますか?
後の分析2:私は元のマシンを変えて、このマシンの後に作られたラジオに電話してもいいです.いいです.でも、ここに問題があります.以前のラジオは毎日持って帰ってメンテナンスしなければなりません.この修正で、お姉さんたち、おじさんたち、七大おばさんのラジオはまたメンテナンスする時に電話の機能ができました.ハハ、怖いですか?だからこれもだめです.
もう3を分析します.ラジオの中で直接に改造して電話をかける機能を増えればいいじゃないですか?はい、やってもいいです.父はラジオで電話するのを待っています.(クラスの継承)/**javascriptの継承には六七種類の方法があります.詳しくは言いません.ここでは比較的新しい方法でObject.create()構文:Object.create、最初のパラメータは継承される原形で、二つ目はオプションパラメータで、一つ以上の属性記述子を含むJavaScriptオブジェクト*/Object.create()は空き箱に入れたいものを入れてもいいです.彼の機能はとても小さい代価を使ってラジオを作る機械を複製することができます.まず、このような空の箱(関数の対象)を作ります.もちろん、この空の箱に入れたいものを入れてもいいです.
同じラジオを改造するなら、元の方法と属性を全部持ってきてください.先に属性を取る:
もう一つの方法:
ここに来て、私たちは元のラジオと同じ機械を作ることができます.このマシンはphoto Radioといいます.電話の機能を追加しましょう.ここに来たらわからない学生がいます.このように面倒くさいなら、直接にもう一つの種類を書いたほうがいいです.はい、今見たところもう一つの種類を書いたら早いです.でも、ラジオには何千何万もの方法があります.三つではなくて、もう一つ書き直しますか?はい、その学生の疑問を解決しました.私達は引き続き新しいマシンに機能を追加しましょう.
ここには電話をかけるラジオを作る機械があります.早くお父さんにラジオを作ってください.
はい、うちの家族はみんなラジオを持っています.あなたは作れますか?完全コード:
もし間違いがあったら、指摘してください.ありがとうございます.
--------------本文分割線--------------
種類が抽象的すぎて、現実的なものを使って類比してみると、(もちろん一つでもいいです)機能のあるものをたくさん作っている機械(ここのものを対象としてもいいです)があります.例えばラジオはラジオがほしいです.まずラジオを作る機械があります.このマシンは私達の言っている種類です.
// ; , ( )
function radio (){
this.time = '12:00';
this.form = ' ';
}
// ;( )
radio.prototype.fm = function(){};
// ;( )
radio.prototype.am = function(){};
// ;( )
radio.prototype.another = function(){};
ここで作ったラジオにはどんな機能がありますか?いつでも変更を加えられます.このマシンは工場の中に置いてあります.いつから作動しますか?いつでも用意しています.ラジオがほしい時(類の実用化も対象といいます)var me-radio = new radio();
この時ラジオがありました.このラジオを使って、短波チャンネルを聞いてみたいです.
me-radio.am()
長波が聞きたいなら、使います.
me-radio.fm()
他のどんな機能を使いたいですか?
me-radio.another();
一日後、姉も同じラジオがほしいです.それは簡単です.私の工場の中にラジオを専門に作る機械があります.何が怖いですか?彼女に一つあげます.
var sister-radio = new radio();
はい、姉もラジオを持っています.そして私のラジオの機能と同じです.長波も聴けますし、短波も聴けます.妹も一台ほしいです.newも一台お願いします.私の七番目のおじさんとおばさんは全部お願いします.
この時、父が来ました.ラジオも一つくださいと言いましたが、今のラジオの機能は私を満足させてくれません.私が欲しいラジオは必ず電話してください.あなたが作ってください.どうすればいいですか?父の命は違わないですよ.
まず分析します.1:ラジオを作る機械をもう一台作りましょう.ある機能(属性と方法)を全部加えてもいいです.でも、前の機械で作ったラジオは普通の機能が全部ありました.再構築は重複した感じがします.そして、工場にラジオをたくさん作る機械はちょっと混んでいますか?
後の分析2:私は元のマシンを変えて、このマシンの後に作られたラジオに電話してもいいです.いいです.でも、ここに問題があります.以前のラジオは毎日持って帰ってメンテナンスしなければなりません.この修正で、お姉さんたち、おじさんたち、七大おばさんのラジオはまたメンテナンスする時に電話の機能ができました.ハハ、怖いですか?だからこれもだめです.
もう3を分析します.ラジオの中で直接に改造して電話をかける機能を増えればいいじゃないですか?はい、やってもいいです.父はラジオで電話するのを待っています.(クラスの継承)/**javascriptの継承には六七種類の方法があります.詳しくは言いません.ここでは比較的新しい方法でObject.create()構文:Object.create、最初のパラメータは継承される原形で、二つ目はオプションパラメータで、一つ以上の属性記述子を含むJavaScriptオブジェクト*/Object.create()は空き箱に入れたいものを入れてもいいです.彼の機能はとても小さい代価を使ってラジオを作る機械を複製することができます.まず、このような空の箱(関数の対象)を作ります.もちろん、この空の箱に入れたいものを入れてもいいです.
1 var photoRadio = function (){
2 // , ;
3 this.name = ' ';
4 }
同じラジオを改造するなら、元の方法と属性を全部持ってきてください.先に属性を取る:
1 var photoRadio = function (){
2 this.name = ' ';
3 radio.call(this); // :
4 }
もう一つの方法:
photoRadio.prototype = Object.create(radio.prototype);
ここに来て、私たちは元のラジオと同じ機械を作ることができます.このマシンはphoto Radioといいます.電話の機能を追加しましょう.ここに来たらわからない学生がいます.このように面倒くさいなら、直接にもう一つの種類を書いたほうがいいです.はい、今見たところもう一つの種類を書いたら早いです.でも、ラジオには何千何万もの方法があります.三つではなくて、もう一つ書き直しますか?はい、その学生の疑問を解決しました.私達は引き続き新しいマシンに機能を追加しましょう.
photoRadio.prototype.photo= function(){}
ここには電話をかけるラジオを作る機械があります.早くお父さんにラジオを作ってください.
var father-radio = new photoRadio();
// 。
father-radio.photo();
はい、うちの家族はみんなラジオを持っています.あなたは作れますか?完全コード:
1 function radio(){ // radio
2 this.time = '12:00'; //
3 this.form = ' ';//
4 }
5 radio.prototype.fm = function(){ // fm
6 console.log(' fm ');
7 console.log(this.time);
8 };
9 radio.prototype.am = function(){// am
10 console.log(' am ');
11 };
12 var me_radio = new radio(); // radio
13
14 var photoRadio = function () { photoRadio
15 this.name = 'aaa' // photoRadio
16 radio.call(this); // radio
17 };
18
19 photoRadio.prototype = Object.create(radio.prototype); // radio
20
21 var father_radio = new photoRadio(); // photoRadio
22
23 father_radio.fm(); // ;