結果
いやいや、なかなかどうしてこういう結果なのです。
本によると、『配列メソッドを騙して使う』となってるのですが、
そんなに騙してるとも思えません。
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 件のコメント:
コメントを投稿