2014年6月27日金曜日

jajavascriptを再学習の7【配列メソッドを騙して使う件】

まぁ、サンプルと結果を先にだして見ましょう。
 

結果


いやいや、なかなかどうしてこういう結果なのです。
本によると、『配列メソッドを騙して使う』となってるのですが、
そんなに騙してるとも思えません。
Array.pushをArray.push.callとして呼び出し、
thisをObjectを指定しているというだけなので、
javascriptのArrayは、ArrayじゃなくてObjectでもOKという仕様
と言ってしまえばそれまでな気もします。。

本を読んだだけのときは、
lengthプロパティを追加してやらないと、
Array.push.callが失敗するのかと思いましたが、
設定しなくてもちゃんと動作します。(IE/CRM/FFX/OPR)

だから気分的には、こんな感じ(O^^O)


もっとわかりやすいサンプルとしては、こんな感じかな。。
配列にArray.pushした場合と、ObjectにArray.pushした場合。
 var abc = ["背負い投げ"];
 Array.prototype.push.call(abc,"出足払い");
 Array.prototype.push.call(abc,"横三角絞め");
 var def = {"得意技":"背負い投げ"};
 Array.prototype.push.call(def,"出足払い");
 Array.prototype.push.call(def,"横三角絞め");
 assertprop(abc,"abc");
 assert(true,"abc[0] = " + abc[0]);
 assert(true,"abc[1] = " + abc[1]);
 assert(true,"abc[2] = " + abc[2]);
 assertprop(def,"def");
 assert(true,"def[0] = " + def[0]);
 assert(true,"def[1] = " + def[1]);
 assert(true,"def[2] = " + def[2]);

0 件のコメント:

コメントを投稿