フロントエンドエンジニア芸人もりたけんじのJavaScript【JavaScript】JavaScript中級者の為の練習問題集261問(脱初心者へ)2016/09/10更新

【JavaScript】引き出しを増やすため「JavaScriptパターン」をなぞる

【JavaScript】引き出しを増やすため「JavaScriptパターン」をなぞる

最近コードリーディングの力を上げるために、
いろいろなJavaScriptの書き方。パターンを学んでいます。
読むだけでなく実際写経してあーなるほどなって理解したい。
いろいろな人のいろいろな書き方を実際書いてみて、
回路を辿って、自分の中の引き出しを増やす。
で、こういうときこういう書き方あったよなとか
あ、あのパターンに似ているなとか
そうなればいいね。

//オブジェクトの作成パターン
//プライベート関数をパブリックメソッドとして開示する
//モジュール開示パターン
revealing module pattern

var myarry;
(function(){
//プライベートな変数と関数を2つずつ定義
var astr = "[object Array]",
      toString = Object.prototype.toString;
function isArray(a){
     return toString.call(a) === astr;
}
function indexOf(haystack, needle){
 var i = 0,
     max = haystack.length;
 for(; i< max; i +=1){
  if(haystack[i]=== needle){
    return i;
  }
 }
 return -1;
}
//パグリックな利用に適すると判断した機能をmyarrayに追加する
myarry = {
  isArray: isArray,
  indexOf: indexOf,
  inArray: indexOf//上と同じ関数を渡している
}
}());

myarry.indexOf(["a","b","c"], "z")
//-1
myarry.indexOf(["a","b","c"], "a")
//0
myarry.indexOf(["a","b","c"], "b")
//1
myarry.isArray([1,2]);
//true
myarry.isArray({0: 1});
//false

myarry.indexOf = null;//ここで不測の事態がおきてる。。
myarry.inArray(["a","b","c"], "z")//でも大丈夫 同じ関数を渡しているから
-1

JavaScriptパターン

(Visited 1 times, 1 visits today)