国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript mixin實現多繼承的方法詳解

2019-11-19 16:58:40
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript mixin實現多繼承的方法。分享給大家供大家參考,具體如下:

mixin簡單通俗的講就是把一個對象的方法和屬性拷貝到另一個對象上,注意這個繼承還是有區別的。js是一種只支持單繼承的語言,畢竟一個對象只有一個原型,如果想實現多繼承,那就簡單暴力的把需要繼承的父類的所有屬性都拷貝到子類上,就是使用mixin啦。

下面所有代碼可以到github上查看完整版。

一個簡單的mixin

直接上代碼

function extend(destClass, srcClass) {  var destProto = destClass.prototype;  var srcProto = srcClass.prototype;  for (var method in srcProto) {    if (!destProto[method]) {      destProto[method] = srcProto[method];    }  }}function Book(){}Book.prototype.printName = function(){  console.log('I am a book, named hello');};function JS(){}extend(JS, Book);var js = new JS();console.log(js);

現在你應該大概了解mixin在做什么。

可以僅僅拷貝某些方法:

function extend(destClass, srcClass, methods) {  var srcProto = srcClass.prototype;  var destProto = destClass.prototype ;    for (var i=0; i<methods.length; i++) {    var method = methods[i];    if (!destProto[method]) {      destProto[method] = srcProto[method];    }  }}function Book() {}Book.prototype.getName = function() {};Book.prototype.setName = function() {};function JS() {}extend(JS, Book, ['getName']);var js = new JS();console.log(js);

mixin實現多繼承

直接上代碼。

function extend(destClass) {  var classes = Array.prototype.slice.call(arguments, 1);  for (var i=0; i<classes.length; i++) {    var srcClass = classes[i];    var srcProto = srcClass.prototype;    var destProto = destClass.prototype;     for (var method in srcProto) {      if (!destProto[method]) {        destProto[method] = srcProto[method];      }    }  }}function Book() {}Book.prototype.getName = function() {};Book.prototype.setName = function() {};function Tech(){}Tech.prototype.showTech = function(){};function JS() {}extend(JS, Book, Tech);var js = new JS();console.log(js);

總結

很多前端庫里都有mixin方法,只是叫法不一樣,比如 jQuery的extend ,文中我們實現的都是淺拷貝,jQuery中的extend可以實現深拷貝。很多庫會使用mixin的方式,將一些工具方法擴展到相應對象中,實現代碼復用。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济阳县| 双辽市| 平谷区| 平度市| 佛山市| 扶沟县| 海宁市| 通海县| 东辽县| 辛集市| 樟树市| 台湾省| 通海县| 常熟市| 富蕴县| 淳安县| 高雄市| 霍林郭勒市| 曲松县| 革吉县| 鹤壁市| 称多县| 贵南县| 柳河县| 梨树县| 手游| 大厂| 普定县| 郧西县| 长丰县| 徐水县| 彭山县| 岳西县| 彝良县| 灌云县| 京山县| 灌云县| 南开区| 金昌市| 新龙县| 株洲市|