日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaScript類和繼承:prototype屬性

我們已經(jīng)在第一章中使用prototype屬性模擬類和繼承的實(shí)現(xiàn)。 prototype屬性本質(zhì)上還是一個JavaScript對象。 并且每個函數(shù)都有一個默認(rèn)的prototype屬性。

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出兩當(dāng)免費(fèi)做網(wǎng)站回饋大家。

如果這個函數(shù)被用在創(chuàng)建自定義對象的場景中,我們稱這個函數(shù)為構(gòu)造函數(shù)。 比如下面一個簡單的場景:

 
 
 
  1. // 構(gòu)造函數(shù)
  2. function Person(name) {
  3.     this.name = name;
  4. }
  5. // 定義Person的原型,原型中的屬性可以被自定義對象引用
  6. Person.prototype = {
  7.     getName: function() {
  8.         return this.name;
  9.     }
  10. }
  11. var zhang = new Person("ZhangSan");
  12. console.log(zhang.getName());   // "ZhangSan"

作為類比,我們考慮下JavaScript中的數(shù)據(jù)類型 - 字符串(String)、數(shù)字(Number)、數(shù)組(Array)、對象(Object)、日期(Date)等。 我們有理由相信,在JavaScript內(nèi)部這些類型都是作為構(gòu)造函數(shù)來實(shí)現(xiàn)的,比如:

 
 
 
  1. // 定義數(shù)組的構(gòu)造函數(shù),作為JavaScript的一種預(yù)定義類型
  2. function Array() {
  3.     // ...
  4. }
  5. // 初始化數(shù)組的實(shí)例
  6. var arr1 = new Array(1, 56, 34, 12);
  7. // 但是,我們更傾向于如下的語法定義:
  8. var arr2 = [1, 56, 34, 12];

同時對數(shù)組操作的很多方法(比如concat、join、push)應(yīng)該也是在prototype屬性中定義的。

實(shí)際上,JavaScript所有的固有數(shù)據(jù)類型都具有只讀的prototype屬性(這是可以理解的:因?yàn)槿绻薷牧诉@些類型的prototype屬性,則哪些預(yù)定義的方法就消失了), 但是我們可以向其中添加自己的擴(kuò)展方法。

 
 
 
  1. // 向JavaScript固有類型Array擴(kuò)展一個獲取最小值的方法
  2. Array.prototype.min = function() {
  3.     var min = this[0];
  4.     for (var i = 1; i <  this.length; i++) {
  5.         if (this[i] <  min) {
  6.             min = this[i];
  7.         }
  8.     }
  9.     return min;
  10. };
  11. // 在任意Array的實(shí)例上調(diào)用min方法
  12. console.log([1, 56, 34, 12].min());  // 1

注意:這里有一個陷阱,向Array的原型中添加擴(kuò)展方法后,當(dāng)使用for-in循環(huán)數(shù)組時,這個擴(kuò)展方法也會被循環(huán)出來。

下面的代碼說明這一點(diǎn)(假設(shè)已經(jīng)向Array的原型中擴(kuò)展了min方法):

 
 
 
  1. var arr = [1, 56, 34, 12];
  2. var total = 0;
  3. for (var i in arr) {
  4.     total += parseInt(arr[i], 10);
  5. }
  6. console.log(total);   // NaN

解決方法也很簡單:

 
 
 
  1. var arr = [1, 56, 34, 12];
  2. var total = 0;
  3. for (var i in arr) {
  4.     if (arr.hasOwnProperty(i)) {
  5.         total += parseInt(arr[i], 10);
  6.     }
  7. }
  8. console.log(total);   // 103

文章名稱:JavaScript類和繼承:prototype屬性
網(wǎng)址分享:http://m.5511xx.com/article/cocoeoj.html