ES6_DECORATOR(修飾器)--一

類的修飾

? ? ? ? 修飾器(Decorator)是一個函數(shù),用來修改類的行為。這是ES7的一個提案,目前Babel轉(zhuǎn)碼器已經(jīng)支持。

? ? ? ? 修飾器對類的行為的改變,是代碼編譯時發(fā)生的,而不是在運行時。這意味著,修飾器能在編譯階段運行代碼。


1、只讀的修飾器


{

? ? ? ? ? let readonly=function(target,name,descriptor){

? ? ? ? ?descriptor.writable=false;returndescriptor

};

? class Test{

? ?@readonly

? ? ? ? ? time(){return‘2017-07-20‘}

}

let test=newTest();

?//test.time=function(){

//console.log(‘reset time‘);

//}; 將報錯? 如果修改的話console.log(test.time());

}


也可以在類的前面進行修飾

{

? ? ?let typename=function(target,name,descriptor){

? ? ?target.myname=‘hello‘;

}

@typename

? class Test{

}

? ? console.log(‘類修飾符‘,Test.myname);//hello

? ?//第三方庫修飾器的js庫:core-decorators; npm install core-decorators}



{

? ? ? let log=(type)=>{returnfunction(target,name,descriptor){

? ? ? let src_method=descriptor.value;

? ? ?descriptor.value=(...arg)=>{

? ? ?src_method.apply(target,arg);

? ? console.info(`log ${type}`);

}

}

}

class AD{

? ? ?@log(‘show‘)

show(){

? ? console.info(‘a(chǎn)d is show‘)

}

? ?@log(‘click‘)

? ?click(){

? ?console.info(‘a(chǎn)d is click‘);

}

}

? ?let ad=newAD();

? ?ad.show();

? ?ad.click();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在這個世界,最公平的就是時間 但卻往往造就了不同的人生 其實別人跟你花了一樣的時間 卻能變成行業(yè)內(nèi)搶手的人 拉開你...
    林瑟StarKing閱讀 213評論 0 0
  • 在堅持星球,聽CZ院長講過一堂早課《匯報工作》,聽后大受啟發(fā)。原來工作匯報也可以有“套路”! 前不久又在一本書當中...
    錦梭閱讀 3,151評論 0 5
  • 小凡產(chǎn)品經(jīng)理學習筆記之用戶體驗報告的正確姿勢 還有更多的你想要的產(chǎn)品知識,可以關(guān)注微信公眾號----小凡產(chǎn)品經(jīng)理學習筆記
    白蘭地奶茶閱讀 302評論 0 0
  • 今天,身體不舒服,嗓子也發(fā)炎了。狀態(tài),比前兩天好一點。心情沒有那么低沉了,看了一本很薄的書。有點遺憾的就是沒有給媽...
    楊淑心閱讀 113評論 1 0
  • 1 字太丑怎么辦。。。所以給它當成畫把它畫出來就好了啊 2 畫完了...
    三俗畫師閱讀 499評論 4 5

友情鏈接更多精彩內(nèi)容