Kamimura's blog
プログラミング(Python、Perl、C、Go、JavaScript)、数学、読書…
ほしい物リスト
2010年4月29日木曜日
プログラミング学習の記録 175.1 独習JavaScript (大型本)の第7章の練習問題7.5
開発環境:Mac OS X Snow Leopard+Firefox(ブラウザ)+Firebug(アドオン)
"独習JavaScript (大型本)"の第7章、p.239の練習問題7.5を解いてみる。
1.
プロパティはapply()メソッドを利用して継承する。メソッドはプロタイプチェーンを利用して継承する。
2.
function Rectangle(height,width){ this.height=height; this.width=width; } function ColoredRectangle(height,width,color){ this.color=color; Rectangle.apply(this,[height,width]); } ColoredRectangle.prototype=new Rectangle(); ColoredRectangle.prototype.constructor=ColoredRectangle;
3.
function Person(age,name,gender){ if(!name){ throw new Error("error:プロパティnameが未指定です"); } this.age=age; this.name=name; this.gender=gender; } function IdentifiedPerson(age,name,gender,id){ if(!id){ this.id=IdentifiedPerson.max+1; } else { this.id=id; if(id>IdentifiedPerson.max){ IdentifiedPerson.max=id; } } Person.apply(this,[age,name,gender]); } IdentifiedPerson.prototype=new Person(null,"name"); IdentifiedPerson.prototype.constructor=IdentifiedPerson; delete IdentifiedPerson.prototype.age; delete IdentifiedPerson.prototype.name; IdentifiedPerson.max=0; var p=new IdentifiedPerson(0,"name","gender"); var p1=new IdentifiedPerson(10,"name1","gender1",10); var p2=new IdentifiedPerson(20,"name2") alert(p.id+":"+p1.id+":"+p2.id);
想定通り動いてくれれば、pはid未定義でid=maxの初期値+1=0+1=1、p1はid=10(ここでmax=10となる)、p2はid未定義なのでid=max+1=10+1=11となり"1:10:11"と表示される。
0 コメント:
コメントを投稿
次の投稿
前の投稿
ホーム
コメントの投稿(Atom)
0 コメント:
コメントを投稿