成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實現JavaScript編寫類的方式

開發 前端
構造方法方式:這是最基本的也是最像Java寫class的方式。這樣的方法簡單明了, 也符合JAVAer的胃口, 但是每new一個新對象, 就會在內存中分配一個sayName方法, 性能不是很好。

網上實現javascript寫類的方法有很多, 總結下不外乎以下幾種. 我自己學習總結了一下.

構造方法方式;原型方式;構造方法+原型的混合方式

現在具體分析一下以上方式的優缺點:

構造方法方式

這是最基本的也是最像Java寫class的方式. 上代碼:

  1. //創建一個Student類  
  2.  function Student(name){  
  3.       this.name = name;  
  4.       this.sayName = function(){  
  5.           alert(this.name);  
  6.       };  
  7.  }  
  8.  //new兩個不同的Student.  
  9.  var jimmy = new Student('jimmy');  
  10.  var henry = new Student('henry');  
  11.  jimmy.sayName();//顯示jimmy  
  12.  henry.sayName();//顯示henry 

這樣的方法簡單明了, 也符合JAVAer的胃口, 但是每new一個新對象, 就會在內存中分配一個sayName方法, 性能不是很好.

原型方式

  1. //創建一個Student類  
  2.  //屬性和方法都通過Student.prototype設置  
  3.  function Student(name){  
  4.      Student.prototype = name;  
  5.      Student.prototype.sayName = function(){  
  6.          alert(this.name);  
  7.      }  
  8.  }  
  9.  //new兩個不同的Student.  
  10.  var jimmy = new Student('jimmy');  
  11.  var henry = new Student('henry');  
  12.  jimmy.sayName();//顯示henry!!!  
  13.  henry.sayName();//顯示henry!!! 

也許執行的代碼和有些童鞋的期望有出入. 兩次alert都彈出henry! 其實很好理解. 屬性和方法都通過prototype設置. 不同對象的同一個屬性或者方法都指向同一個內存, 所以henry是在jimmy后設置的. 所以henry把jimmy覆蓋了.

混合方式

構造方法的方式可以為同一個類的每一個對象分配不同的內存, 這很適合寫類的時候設置屬性, 但是設置方法的時候我們就需要讓同一個類的不同對象共享同一個內存了. 寫方法用原型的方式***. 所以寫類的時候需要把構造方法和原型兩種方式混合著用. 廢話少說, 看代碼:

  1. //創建一個Student類  
  2.  //屬性通過構造方法設置  
  3.  //方法通過Student.prototype設置  
  4.  function Student(name){  
  5.      this.name = name;  
  6.      Student.prototype.sayName = function(){  
  7.          alert(this.name);  
  8.      }  
  9.  }  
  10.  //new兩個不同的Student.  
  11.  var jimmy = new Student('jimmy');  
  12.  var henry = new Student('henry');  
  13.  jimmy.sayName();//顯示jimmy  
  14.  henry.sayName();//顯示henry 

so far so good. 同一類的不同對象, 屬性各自占有內存, 方法共享同一內存. 其實這里還是有一個小問題:

每new一個新對象, 就會執行一次

  1. Student.prototype.sayName = function(){  
  2.      alert(this.name);  

造成不必要的重復運算. 可以在類里面設置一個標記位, ***次執行的時候給這個標志位設置true, 如果為true就不再為prototype設置方法.

 

責任編輯:張偉 來源: jimmy_jia的博客
相關推薦

2023-05-22 15:35:10

JavaScriptWeb開發

2011-03-07 09:41:10

JavaScript

2011-03-08 09:15:04

JavaScript

2012-09-17 10:35:41

JavaScriptJS代碼

2009-07-22 10:08:48

Javascript私

2011-06-27 13:57:42

JavaScript

2016-11-30 18:35:03

JavaScript

2014-11-25 10:03:42

JavaScript

2012-12-17 13:51:22

Web前端JavaScriptJS

2022-06-07 09:30:35

JavaScript變量名參數

2015-05-08 13:09:12

JavaScriipt抽獎程序

2014-04-21 10:14:52

PromisesJavaScript

2013-04-15 09:02:43

JavaScriptJS

2010-01-27 17:08:01

Android Hel

2009-06-24 15:00:39

Javascript代

2021-06-09 10:45:12

JavaScript開發 編程

2009-11-27 15:31:33

PHP類搜索定位目錄樹

2022-06-21 09:26:21

Shell腳本JavaScript

2022-06-22 10:07:07

JavaScript枚舉

2011-03-04 10:11:09

JavascriptAPI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.成人在线视频 | 久久久久久久一区二区三区 | 国产一区三区在线 | 狠狠的干| 在线中文字幕国产 | 久久91av | 免费视频色 | 99re在线 | 国产极品粉嫩美女呻吟在线看人 | 国产日韩欧美 | 91影院| 日韩视频一区二区 | 亚洲一区二区av | 网站黄色在线 | 欧美一区二区三区视频 | 亚洲乱码国产乱码精品精的特点 | 在线天堂免费中文字幕视频 | 色性av| 天天操天天操 | 日本久久久久久 | 日韩综合在线 | 精品久久香蕉国产线看观看亚洲 | 网站一区二区三区 | 国产成人a亚洲精品 | 精品国产一区二区在线 | 999精品在线 | 欧美色图综合网 | 99久久99久久精品国产片果冰 | 国产电影一区二区 | 国产成人综合亚洲欧美94在线 | 日本成人福利视频 | 欧美日韩手机在线观看 | 亚洲视频一区在线 | 欧美精品一区二区三区蜜桃视频 | 色嗨嗨| 亚洲欧美日韩一区二区 | 欧美日韩亚洲国产 | 欧美日韩国产精品一区 | 国产一区二区三区免费观看在线 | 自拍偷拍亚洲欧美 | 91精品国产日韩91久久久久久 |