たぼさんの部屋

いちょぼとのんびり

基本的なjavascript構文

newで生成するインスタンス関数

この構文は以下の要素をもつ

  • private property
  • private method(__constractor)
  • static property
  • public static method

特徴

privateなインスタンスプロパティへの参照をもったpublic staticメソッドをもつ。
privateへの参照を外部に渡さないために、setterメソドは用意しない。 (必要なインスタンスプロパティはインスタンス生成時に渡す)
public staticメソッド部分をprototypeで宣言。 __constractor部でprototypeへprivateプロパティへの参照を渡す。
Object.create(null)で生成したオブジェクトを返すのでhashオブジェクトである。

var XHRConnection = function(args){

  var _private = {                                     //private property
    "url":"null",
    "params":{},
    "callback":{}
  };
  var __constractor = function(args){                  //constractor
    var _this = Object.create(null);                   //hash
    XHRConnection.prptotype.call(_this,_private);      //_privateを渡してprototypeをcall
      for(var key in args){
        if(args.hasOwnProperty(key) && _private[key]){
          _private[key] = args[key];                   //引数を privateにセット
        }
      }
    return _this;
  };
  if(!(this instanceof XHRConnection)){                 //new強制
    return new XHRConnection(args);
  }else{
    return __constractor(args);                         //コンストラクタ呼び出し
  }
 };
 XHRConnection.prptotype = function(){                  //prototype:クロージャ関数
  var _counter = 0;                                 //prvate static
  var _request = new XMLHttpRequest();
  return function(args){                             //public statc
   _counter++;                                           //private staticを更新
   var _p = args;                                        //prototype property set

   this.getCounter = function(){                      //public static method
    return _counter;
   };

   this.doGet = function(){
    _request.onreadystatechange = function(){
     if(_request.readyState == 4 && _request.status== 200){
      _p.callback(_request.responseText);                //callback
      _request.abort();
     }
    };
    _request.open("GET",_p.url,true);
    _request.send(null);
   };
  };
 }();

function init(){
  var callback = function(response){
   //alert(response);
   var _target = document.getElementById('target');
   _target.innerHTML= response;
  };
  var args = {
   "url":"test.txt",
   "params":{},
   "callback":callback
  };
  console.log(args);
  var xhr = new XHRConnection(args);
  xhr.doGet();

 }