JavaScript中給對象添加方法


在JavaScript中,我們經常要給已定義的對象添加一些方法,如下:
   function circle(w,h){
     this.width=w;
     this.height=h;
   }
   var cir = new circle(8,9);
   這時我們突然要計算cir對象的面積,怎么辦呢?我們可以專門為這個對象新定義一個計算面積的方法。
   function area(){
      return this.width*this.height;
   }
   cir.area=area;
這時就可以調用cir.area()來計算面積了。
當然上面的語句也可以這樣寫:
   cir.area=function area(){
      return this.width*this.height;
   }
兩種寫法效果一樣。
有時候我們需要每個對象都有area()方法,那應該怎么做呢?
這時代碼如下:
   function area(){
      return this.width*this.height;
   }
   function circle(w,h){
      this.width=w;
      this.height=h;
      this.area=area;
   }
這樣每個circle定義的對象就會有area()方法了。
   這樣定義並不是一個最好的方式,因為這樣定義會使每個對象里都area()方法,如果你定義的對象很多時,就會多占相當一部分內存。應該怎么做呢?
   在JavaScript中,定義一個對象時都會繼承一個原始對象,我們可以通過給原始對象添加area()方法而不必讓每個circle對象都有area()方法。我們用prototype屬性來實現。如下:
   function area(){
      return this.width*this.height;
   }
   function circle(w,h){
      this.width=w;
      this.height=h;
   }
   ///使用prototype之前必須定義一個對象,這里我們定義了一個匿名對象///
   new circle()
   circle.prototype.area=area;
這樣實現就不讓circle對象多占內存了。
定義方法是這樣,定義屬性變量也是一樣的道理。
  
轉載:http://blog.sina.com.cn/s/blog_49cc672f010007ca.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM