開発環境
- OS X Lion - Apple(OS)
- Safari (Webプラウザ)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- Script言語:JavaScript
- JavaScript Library: jQuery
独習JavaScript 高橋 和也 (著), 竹添 直樹 (著), 里見 知宏 (著) の第7章(オブジェクト指向プログラミング)7.4(メソッドの定義)練習問題7.4、2, 3を解いてみる。
その他参考書籍
- JavaScript 第5版 David Flanagan (著), 村上 列 (翻訳)
- JavaScriptクイックリファレンス David Flanagan (著), 木下 哲也 (翻訳), 福龍興業 (翻訳)
2. 3
コード(TextWrangler)
function Person(age, name, gender){ if(!name){ throw new Error('error: プロパティnameが未指定です'); } this.age = age; this.name = name; this.gender = gender; } Person.prototype.equals = function(other){ if(this.age && other.age){ if(this.age != other.age){ return false; } } if(this.gender && other.gender){ if(this.gender != other.gender){ return false; } } if(this.name != other.name){ return false; } return true; }; Person.getGenderString = function (gender){ if(gender == 'male'){ return '男性'; } else if(gender == 'female'){ return '女性'; } else { return '?' } }; var p1 = new Person(10,'javascript','male'); var p2 = new Person(10,'javascript','male'); var p3 = new Person(10,'javascript','female'); var p4 = new Person(20,'javascript','male'); var p5 = new Person(10,'javascript'); var p6 = new Person(10,'HTML5','male'); var p7 = new Person(10,'HTML5','female'); var people = [p2,p3,p4,p5,p6,p7]; var result = "people"+ "<br />" + "0: name: " + p1.name + ", age: " + p1.age + ", gender: " + p1.gender + "(" + Person.getGenderString(p1.gender) + ")<br />"; for(var i = 0 ; i < people.length ; i++){ result += (i + 1) + ": name: " + people[i].name + ", age: " + people[i].age + ", gender: " + people[i].gender + "(" + Person.getGenderString(people[i].gender) + ")<br />"; } result += "0と比較" + "<br />"; for(var i = 0; i < people.length ; i++){ result += (i + 1) + ": " + p1.equals(people[i]) + "<br />"; } $('#pre0').html(result);
4.
メソッドをインスタンスプロパティではなく、prototypeプロパティに対して定義すると、メモリを効率よく使えるというメリットがある。
0 コメント:
コメントを投稿