欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何用JavaScript定義一個類

 更新時間:2014年09月12日 10:46:42   投稿:hebedich  
其實Javascript中沒有類這個定義,但是有類這個概念。很多人都寫過這樣的代碼,就是一個關鍵字 function,然后定義一個方法名,方法名后緊跟一對括號。如果你在項目中寫過這樣的代碼,那么祝賀你,你可以不費任何吹毛之力,就能一口氣讀完這篇文章了。

我原來的寫法都是這樣:

function Dog(){
  this.name = 'hachi';
}

Dog.prototype = {
  makeNoise:function(){
    alert('wangwangwang');
  }
};

后來又看到另外一種復雜一點而且看起來好像沒有必要的寫法:

function Dog(){
  var privateVariable = 'secret';

  var fn = function(){
    //...
  }

  fn.prototype = {
    makeNoise:function(){
      alert('wangwangwang');
    }
  }

  return fn;
}

這里的Dog函數(shù)其實是一個 制造類 的函數(shù),它返回了真正的Dog類。
感覺這樣做的好處是更好的實現(xiàn)了封裝。
例如這里的privateVariable就是一個私有變量:

var d = new Dog;
d.privateVariable //undefined

另外如果在第一個例子的最后加上一句:

Dog.prototype = {
  //e...WTF??
}

這樣Dog就不是Dog了~

后來的理解:
上面這樣新建類的方法直接重寫了prototype對象。這樣prototype原本內(nèi)置的屬性就沒有了(arguments, call, apply等)。
下面這種新建類的方法好像更好一些:

var Dog = function(name){
  this.name = name;
  var privateVariable = 'you cannot see me.';
  this.getPrivate = function(){return privateVariable;};
}

相關文章

最新評論