成人免费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

2012-09-17 10:35:41

JavaScriptJS代碼

2011-03-08 09:15:04

JavaScript

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

2011-05-25 16:23:35

Javascript類繼承

2009-01-04 09:08:30

面向對象繼承接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜免费网| 伊人网站在线观看 | 视频一区二区在线观看 | 日韩在线观看中文字幕 | 天天干天天干 | 精品欧美乱码久久久久久1区2区 | 日韩精品成人网 | 天天天堂 | 日韩一区二区在线观看视频 | 欧美一区二区三区四区五区无卡码 | 国产一级一级毛片 | 中文字幕一区二区三区日韩精品 | 中文字幕视频在线 | 国产小视频在线 | 亚洲欧美综合精品另类天天更新 | 日韩精品视频在线 | 欧美激情综合 | 99精品视频在线观看免费播放 | 国产成人福利 | 97精品国产手机 | 亚洲人a | 久久久久国产精品 | 久久精品视频网站 | 播放一级毛片 | 蜜桃av一区二区三区 | 日屁网站 | 天天摸天天干 | 亚洲人成人一区二区在线观看 | 国产精品亚洲成在人线 | 亚洲自拍一区在线观看 | 在线不卡视频 | 九九热视频这里只有精品 | 中文字幕一区二区视频 | 一区二区三区免费看 | 中文字幕高清 | 亚洲国产精品区 | 亚洲一区二区三区免费视频 | 欧美日韩在线视频一区 | 亚洲欧美一区二区三区国产精品 | 国产精品久久国产精品99 | 欧美一级在线 |