最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用JavaScript定義一個類

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

我原來的寫法都是這樣:

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

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

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

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;};
}

相關(guān)文章

  • 一個JavaScript變量聲明的知識點

    一個JavaScript變量聲明的知識點

    JavaScript變量聲明很簡單,但是這里也有要學習的知識點,對于JavaScript基礎(chǔ)學習很重要。
    2013-10-10
  • 淺析JavaScript異步代碼優(yōu)化

    淺析JavaScript異步代碼優(yōu)化

    這篇文章主要介紹了JavaScript異步代碼優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • JavaScript lastIndexOf方法入門實例(計算指定字符在字符串中最后一次出現(xiàn)的位置)

    JavaScript lastIndexOf方法入門實例(計算指定字符在字符串中最后一次出現(xiàn)的位置)

    這篇文章主要介紹了JavaScript字符串對象的lastIndexOf方法入門實例,lastIndexOf方法用于計算指定字符在字符串中最后一次出現(xiàn)的位置,需要的朋友可以參考下
    2014-10-10
  • 深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解

    深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解

    這篇文章主要介紹了深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解,本文講解了默認模式、借用構(gòu)造函數(shù)、借用構(gòu)造函數(shù)并設(shè)置原型、共享原型、臨時構(gòu)造函數(shù)、klass等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • JS數(shù)組(Array)處理函數(shù)整理

    JS數(shù)組(Array)處理函數(shù)整理

    這篇文章主要整理了一下JS數(shù)組(Array)處理函數(shù),常用的都匯總了一下,推薦給大家。
    2014-12-12
  • javascript事件綁定學習要點

    javascript事件綁定學習要點

    這篇文章主要介紹了javascript事件綁定學習要點,主要包含下面四個方面1.傳統(tǒng)事件綁定的問題,2.W3C事件處理函數(shù),3.IE事件處理函數(shù),4.事件對象的其他補充,有需要的小伙伴可以參考下
    2016-03-03
  • Javascript基礎(chǔ)教程之變量

    Javascript基礎(chǔ)教程之變量

    大家都知道javascript是可以隱式聲名變量的。但要注意,隱式聲名變量總是被創(chuàng)建為全局變量??匆韵麓a,情愿javascript語言強制聲明變量。建議大家一定要var聲明變量。
    2015-01-01
  • EsLint入門學習教程

    EsLint入門學習教程

    ESLint是一個代碼規(guī)范和錯誤檢查工具,下面這篇文章主要介紹了EsLint的相關(guān)資料,需要的朋友可以參考學習,下面來一起看看吧。
    2017-02-02
  • javascript編程起步(第二課)

    javascript編程起步(第二課)

    javascript編程起步(第二課)...
    2007-02-02
  • JS腳本defer的作用示例介紹

    JS腳本defer的作用示例介紹

    defer作用是文檔加載完畢了再執(zhí)行腳本,這樣回避免找不到對象的問題,下面有個不錯的示例,感興趣的朋友可以參考下
    2014-01-01

最新評論

兰考县| 丰宁| 庐江县| 阿瓦提县| 云南省| 武隆县| 镇雄县| 克什克腾旗| 略阳县| 崇礼县| 祥云县| 公安县| 象州县| 武城县| 文水县| 雷波县| 鄂州市| 乐亭县| 南郑县| 商水县| 板桥市| 色达县| 西峡县| 鲜城| 廉江市| 库伦旗| 仪陇县| 七台河市| 深水埗区| 英吉沙县| 当阳市| 特克斯县| 綦江县| 九台市| 西平县| 彰化县| 惠安县| 民勤县| 斗六市| 东乌珠穆沁旗| 伊金霍洛旗|