中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么淺析JavaScript的寫類方式

發布時間:2021-11-17 17:06:42 來源:億速云 閱讀:129 作者:柒染 欄目:web開發

怎么淺析JavaScript的寫類方式,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

這篇開始會記錄一些寫類的工具函數。以下列舉的有的是工作中碰到的,有的是從書籍或網上收集的。

構造函數 + 原型 直接組裝一個類;同一構造函數將組裝出同一類型

/**   * $class 寫類工具函數之一   * @param {Function} constructor   * @param {Object} prototype   */ function $class(constructor,prototype) {      var c = constructor || function(){};      var p = prototype || {};      c.prototype = p;      return c;  }

用構造函數來生成類實例的屬性(字段),原型對象用來生成類實例的方法。

//構造函數  function Person(name) {      this.name = name;  }  //原型對象  var proto = {      getName : function(){return this.name},      setName : function(name){this.name = name;}   }  //組裝  var Man = $class(Person,proto);  var Woman = $class(Person,proto);

這時候已經得到了兩個類Man,Woman。并且是同一個類型的。測試如下:

console.log(Man == Woman); //true  console.log(Man.prototype == Woman.prototype); //true

創建對象看看

var man = new Man("Andy");  var woman = new Woman("Lily");   console.log(man instanceof Man); //true  console.log(woman instanceof Woman); //true  console.log(man instanceof Person); //true  console.log(woman instanceof Person); //true

ok,一切如我們所期望。但是有個問題,下面代碼的結果輸出false

console.log(man.constructor == Person);//false<br>

這讓人不悅:從以上的代碼看出man的確是通過Man類new出來的 var man = new Man("Andy"),那么對象實例man的構造器應該指向Man,但為何事與愿違呢?

原因就在于$class中重寫了Person的原型:c.prototype = p;

好了,我們把$class稍微改寫下,將方法都掛在構造器的原型上(而不是重寫構造器的原型),如下:

function $class(constructor,prototype) {      var c = constructor || function(){};      var p = prototype || {};  //  c.prototype = p;      for(var atr in p){          c.prototype[atr] = p[atr];      }         return c;  }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福清市| 旬邑县| 哈密市| 长阳| 彭山县| 柳江县| 交城县| 青海省| 株洲县| 乌鲁木齐县| 普宁市| 关岭| 扶沟县| 岑巩县| 榆社县| 三明市| 浏阳市| 永仁县| 伊通| 松桃| 同心县| 和静县| 昭苏县| 个旧市| 开江县| 柳江县| 马鞍山市| 和林格尔县| 普格县| 随州市| 张家口市| 鄂托克前旗| 巍山| 兴义市| 德清县| 宽城| 长寿区| 阿拉善左旗| 安龙县| 饶阳县| 海阳市|