本文實例講述了JavaScript mixin實現(xiàn)多繼承的方法。分享給大家供大家參考,具體如下:
在西華等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,西華網(wǎng)站建設(shè)費用合理。
mixin簡單通俗的講就是把一個對象的方法和屬性拷貝到另一個對象上,注意這個繼承還是有區(qū)別的。js是一種只支持單繼承的語言,畢竟一個對象只有一個原型,如果想實現(xiàn)多繼承,那就簡單暴力的把需要繼承的父類的所有屬性都拷貝到子類上,就是使用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);
現(xiàn)在你應(yīng)該大概了解mixin在做什么。
可以僅僅拷貝某些方法:
function extend(destClass, srcClass, methods) { var srcProto = srcClass.prototype; var destProto = destClass.prototype ; for (var i=0; i
mixin實現(xiàn)多繼承
直接上代碼。
function extend(destClass) { var classes = Array.prototype.slice.call(arguments, 1); for (var i=0; i
總結(jié)
很多前端庫里都有mixin方法,只是叫法不一樣,比如 jQuery的extend ,文中我們實現(xiàn)的都是淺拷貝,jQuery中的extend可以實現(xiàn)深拷貝。很多庫會使用mixin的方式,將一些工具方法擴展到相應(yīng)對象中,實現(xiàn)代碼復用。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。