首頁  >  文章  >  web前端  >  如何用JavaScript定義一個類別_基礎知識

如何用JavaScript定義一個類別_基礎知識

WBOY
WBOY原創
2016-05-16 16:36:191070瀏覽

我原本的寫法都是這樣:

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函數其實是一個 製造類別 的函數,它回傳了真正的Dog類別。
感覺這樣做的好處是更好的實現了封裝。
例如這裡的privateVariable就是一個私有變數:

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

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

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

這樣Dog就不是Dog了~

後來的理解:
上面這樣新建類別的方法直接重寫了prototype物件。這樣prototype原本內建的屬性就沒有了(arguments, call, apply等)。
下面這種新建類別的方法好像比較好:

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn