<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[success] # reflect-metadata ~~~ 1.需要安裝這個庫:npm install reflect-metadata --save 2.在定義類或者類方法的時候,可以設置一些元數據,我們可以獲取 到在類與類方法上添加的元數據,用的方法就是 Reflect Metadata。 元數據指的是描述東西時用的數據。 3.這個庫具體干啥我還沒太懂,后續會死磕這個 ~~~ * 參考文章 [寧浩網](https://ninghao.net/blog/7384) [reflect-metadata api官方文檔](https://github.com/rbuckton/reflect-metadata) >[info] ## 使用說明 ~~~ 1.這個庫將會配合接下來的實戰驗證篇章,其中主要用到了兩個方法, 對這兩個方法做詳細說明方便后續理解 ~~~ >[danger] ##### getMetadata -- 獲取映射對應的數據 ~~~ 1.這個方法在官方api的英文 -- get metadata value of a metadata key on the prototype chain of an object or property,通過有道翻譯的意思是:獲取對象或 屬性原型鏈上的元數據鍵的元數據值 2.我理解的意思是找到對應映射關系的'key',里面的的'admin' 相當于所對應的'value' ,通過'getMetadata'方法中的'key' 去尋找在映射時候添加的'value',在修飾類和類中 屬性的時候使用略有差異 2.1.當去找'類'所映射的對應關系使用,第一個參數是創建映射時候的'key',第二個 參數是這個'類' 2.2.當去找'類中屬性'對應的映射關系時候,三個參數,第一個參數是創建映射時候的'key' ,第二個參數是這個'實例',第三個是實例中所對應的具體'屬性',其實可以很容易理解這里 為什么用的是實例,因為有了實例才有了屬性 ~~~ * 案例一 ~~~ 1.通過案例一可以看出,可以用'reflect-metadata' 修飾類和類中的屬性,本質上 和裝飾器一樣,其中'role' 相當于映射關系得到 ~~~ ~~~ @Reflect.metadata('role', 'admin') class Post { @Reflect.metadata('role', 'admin') name = '' } const metadataClass = Reflect.getMetadata('role', Post,); const metadataObj = Reflect.getMetadata('role', new Post(),'name'); console.log(metadataClass);// admin console.log(metadataObj); // admin ~~~ >[danger] ##### defineMetadata -- 自定義映射 ~~~ 1.除了上面'Reflect.metadata' 這種來給'類' 和 '屬性' 增加映射關系,還可以 通自帶的api'defineMetadata ' 來增加自定義的映射,這里和上面一樣有兩種 傳參使用方法 1.1 當只有這 三個參數'metadataKey,metadataValue, target'修飾類的 1.2 當有這 四個參數'metadataKey,metadataValue, target, propertyKey' 修飾屬性 2.參數詳細解釋: 2.1 metadataKey -- 設置映射的'key' 2.2 metadataValue -- 映射'key' 對應的'value' 2.3 target -- 需要映射對應的類 或者 實例 2.4 propertyKey 實例上的屬性 ~~~ ~~~ /** * 創建一個自定義的映射關系存儲 * @param metadataKey 映射的key * @param metadataValue 映射key 對應的value值 * @param target 映射需要的對應的類 或者實例 * @param propertyKey 實例上的屬性 * **/ function customDecorator(metadataKey, metadataValue) { return ( target, propertyKey) =>{ Reflect.defineMetadata(metadataKey,metadataValue, target, propertyKey) } } class Post { @customDecorator('role', ['1']) name = '' } const post = new Post() let rg = Reflect.getMetadata('role',post, 'name') console.log(rg) // ["1"] rg.push('2') rg = Reflect.getMetadata('role',post, 'name') console.log(rg) // ["1", "2"] ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看