JavaScriptのfor-each文
JavaScriptでfor-each文っぽくして実行したら、僕の予想と異なって少しハマった。
Javaでfor-eachをするコードを書いてみた。
public class Main { public static void main(String[] args) { String fruits[] = {"Apple", "Orange", "Grape", "Lemon"}; for (String fruit: fruits) { System.out.println(fruit); } } } -実行結果- Apple Orange Grape Lemon
Javaのfor文のfruit変数はStringの値である、なぜならコレクションのfruitsがString値だから。
でも同じことをJavaScriptでやろうとすると、
fruits = ['Apple', 'Orange', 'Grape', 'Lemon']; for (var fruit in fruits) { console.log(fruit); } -実行結果- 0 1 2 3
どれもコレクションのインデックスが返される。
もしかしたら僕の勘違いかもしれないが。。
JavaScriptの継承について。
この前買った本を読んでいたら、
function initializeBase(derive, base, baseArgs) { base.apply(derive, baseArgs); for(var prop in base.prototype) { var proto = derive.constructor.prototype; if(!proto[prop]) { proto[prop] = base.prototype[prop]; } } } var Member = function(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; }; Member.prototype.getName = function() { return this.firstName + ' ' + this.lastName; }; var SpecialMember = function(firstName, lastName, role) { initializeBase(this, Member, [firstName, lastName]); this.role = role; }; SpecialMember.prototype.isAdministrator = function() { return (this.role == 'Administrator'); }; var mem = new SpecialMember('Kotaro', 'Haynes', 'Administrator'); document.writeln('Name: ' + mem.getName() + '<br>'); document.writeln('Administrator: ' + mem.isAdministrator());
3行目の"derive.constructor.prototype"で、なぜconstructorが入るのかがいまいちよく分からない。
僕の頭の中ではconstructorとprototypeは全く違うものだと思っていたからだ。
JavaScript 本格入門
今日はJavascriptの本を買ってきた。
もともとObjective-CとかでiOSのお絵かきアプリとか書いたり、プログラミング歴は1年ちょいある。
だから変な初心者を対象とした本よりも、ある程度の経験者を対象とした本がいいなと思っていた。
Amazon.co.jp: JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで: 山田 祥寛: 本
これを読んで頑張ろう。