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

Javascript之面向對象--封裝

 更新時間:2016年12月02日 13:41:05   作者:船長op  
本篇文章通過具體實例,對Javascript的封裝過程進行案例分析,有助于對其代碼實現(xiàn)的理解與學習。下面就隨小編一起來看看吧

第一步:做一個“手機的類"

var MobilePhone = (function(){
    …………
})()

第二步:考慮這個類,里需要那些類的私有屬性,這里我想定義的是實例出來手機的數量

var MobilePhone = (function(){
 //私有屬性
 var count = 0; //代表手機的數量
})()

第三步:創(chuàng)建一個構造函數,即實例時候,對產生的新象的一個初始化,例如屬性,方法的初始化;在這個例子中,每一個手機都會有顏色,大小,價格屬性.這里的構造函數也是一個閉包,所以可以訪問count,并且count的值會長期保存在內存中(只要有引用存在)

var MobilePhone = (function(){
 //私有屬性
 var count = 0; //代表手機的數量 
     //構造函數
     var creatphone = function(color,size,price){
         count++;
         this._color = color; //手機的顏色
         this._size = size; //手機的大小
         this._price = price; //手機的價格
         this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
      }
})()

第四步:共有方法:

即所有實例出來的手機對象,都能使用的方法,這里手機應該可以改變價格,顏色,大小,也可以顯示大小,顏色,價格。

這里的共有方法應該放在“原型對象”中:

1.所有通過該構造函數實例的對象,也就是造出的手機,都能使用“原型對象”中的方法。

2.如果放在構造函數中,那么每一次實例一個手機對象出來,都會產生一堆重復的方法,占用內存。

3."constructor":creatphone解釋:

因為creatphone.prototype ={……}相當對把之前的原型對象的引用,給復蓋掉了。而為了讓原型對象和該構造函數關聯(lián)起來 設置了"constructor":creatphone,這個屬性.

var MobilePhone = (function(){
 //私有屬性
 var count = 0;//代表手機的數量
    //構造函數
     var creatphone = function(color,size,price){
        count++;
        this._color = color; //手機的顏色
        this._size = size; //手機的大小
        this._price = price; //手機的價格
        this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
      }
 //公有方法,存放在原型對象中 
 creatphone.prototype = { 
      "constructor":creatphone,
      //獲取手機顏色
  "getColor" : function(){
  return this._color; 
  },
      //設置手機顏色
  "setColor" : function(color){
  this._color = color;
  },
      //獲取手機大小
  "getSize" : function(){
  return "width:"+this._size.width + " height:" + this._size.height; 
  },
      //設置手機大小
  "setSize" : function(size){
  this._size.width = size.width;
  this._size.height = size.height;
  },
      //獲取手機價格
  "getPrice" : function(){
  return this._price;
  },
      //設置手機價格
  "setPrice" : function(price){
  this._price = price
  } 
 }
})()

第五步:特權方法,即需要有一個方法,能夠去訪問類的私有變量。就是實例出來多少臺手機對象

var MobilePhone = (function(){
 //私有屬性
 var count = 0;//代表手機的數量
 var index = 0;//代表手機的索引
     //構造函數
     var creatphone = function(color,size,price){
         count++;
         this._color = color; //手機的顏色
         this._size = size; //手機的大小
         this._price = price; //手機的價格
         this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
       }
     //公有方法,存放在原型對象中
 creatphone.prototype = {
  "constructor":creatphone,
  "getColor" : function(){
  return this._color; 
  },
  "setColor" : function(color){
  this._color = color;
  },
  "getSize" : function(){
  return "width:"+this._size.width + " height:" + this._size.height; 
  },
  "setSize" : function(size){
  this._size.width = size.width;
  this._size.height = size.height;
  },
  "getPrice" : function(){
  return this._price;
  },
  "setPrice" : function(price){
  this._price = price
  } 
 }
 //特權方法
 creatphone.get_count_index = function(){
  return count
 }
 return creatphone;
})()

用上面封裝的一個手機類 測試

var anycall = new MobilePhone(); //實例一個三星手機對象
var HTC = new MobilePhone(); //實例一個HTC手機對象
var Iphone4s = new MobilePhone(); //實例一個蘋果4S手機對象
console.log("三星是第:"+anycall.index+"臺"); //FF的控制臺輸出三星手機對象是第幾臺創(chuàng)建的,即索引;
console.log("HTC是第:"+HTC.index+"臺"); //FF的控制臺輸出HTC手機對象是第幾臺創(chuàng)建的,即索引;
console.log("Iphone4s是第:"+Iphone4s.index+"臺");  //FF的控制臺輸出個蘋果4S手機對象是第幾臺創(chuàng)建的,即索引;
console.log("總共造出了"+MobilePhone.get_count_index()+"手機"); //FF的控制臺輸出總共創(chuàng)建了幾臺手機;
console.log(anycall.constructor === MobilePhone); //實例出來的對象,的原形象中的constructor,是否還指向MobilePhone

 結果如下,全完正確:

以上就是本文的全部內容,希望對大家有所幫助,感興趣的朋友可以看下《Javascript之面向對象--方法》謝謝對腳本之家的支持!

相關文章

最新評論

清远市| 赤峰市| 苗栗县| 理塘县| 福贡县| 格尔木市| 闵行区| 北安市| 安国市| 边坝县| 贵州省| 玛多县| 峨眉山市| 吉首市| 勃利县| 平谷区| 千阳县| 方城县| 鄯善县| 长沙市| 龙井市| 沙湾县| 庆元县| 昌都县| 林口县| 桂平市| 佛坪县| 合肥市| 信宜市| 西吉县| 香河县| 永安市| 咸宁市| 昭平县| 云龙县| 伊通| 将乐县| 东方市| 紫金县| 德钦县| 杂多县|