<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] >[success] # 將裝飾器作用在類的方法上 ~~~ 1.裝飾器中的默認參數(具體的可以看知識擴展篇): 1.1 @param {Object} 'target' 被裝飾器的類的原型 1.2 @param {string} 'name' 被裝飾的類、屬性、方法的名字 1.3 @param {Object} 'descriptor' 被裝飾的類、屬性、方法的descriptor 2.最后需要返回'descriptor ' ~~~ >[danger] ##### @+'函數名' 使用工廠方式 -- 給類加自定義的靜態屬性或者靜態方法 ~~~ function Dspeak(target, name, descriptor) { descriptor ={ value(params){ console.log(params,122) return '我被裝飾了' }, // 如果不配置下面三個項走他們的默認值 writable : false, configurable : true, enumerable : true } return descriptor } class Person{ @Dspeak speak(params){ console.log(params) return '我瞎說' } } const person = new Person() console.log(person.speak('測試裝飾器接受參數')) // 打印結果: 測試裝飾器接受參數 122 我被裝飾了 ~~~ >[danger] ##### 推論類裝飾器,target, name, descriptor 指向 ~~~ 1.通過下面案例的打印結果可以得出結論,target 指向的是被修飾方法的類, 'name' 指向的是修飾的方面名字,'descriptor ' 指向的是被修飾方法的'Object.defineProperty' 2.根據上下兩個案例可以發現,如果被修飾的是一個方法,那么 想 修飾這個方法需要,對他的 'Object.defineProperty' 對象中的'value' 做操作,如果是方法則'value' 是一個方法 3.如果被修飾的對象有參數,那么在他的'Object.defineProperty'的'value'方法也可獲得傳遞的參數 ~~~ ~~~ function Dspeak(target, name, descriptor) { console.log(target, name, descriptor) } class Person{ @Dspeak speak(params){ return '我瞎說' } } const person = new Person() console.log(person.speak('測試裝飾器接受參數')) ~~~ * 打印結果 ![](https://box.kancloud.cn/2e3d98044cbba6a22967c88886198a2b_746x102.png) >[danger] ##### 根據阮一峰老師的案例通過-- apply ~~~ 1.在不改變原本被修飾對象返回的內容,并且在之前做一些我們想添加的操作, 可以利用這個案例 ~~~ ~~~ class Math { @log add(a, b) { return a + b; } } function log(target, name, descriptor) { var oldValue = descriptor.value; descriptor.value = function() { console.log(`Calling ${name} with`, arguments); return oldValue.apply(this, arguments); }; return descriptor; } const math = new Math(); // passed parameters should get logged now math.add(2, 4); ~~~ >[danger] ##### @+'函數' 使用方式 -- 給類加自定義的靜態屬性或者靜態方法 ~~~ 1.簡單的案例,參數是否可以被枚舉 ~~~ ~~~ function isEnumerable(params) { return (target, name, descriptor)=>{ descriptor.enumerable = params console.log(descriptor) return descriptor } } class Person{ @isEnumerable(true) speak(params){ return '我瞎說' } } const person = new Person() for(let i in person){ console.log(i) // speak } ~~~ >[info] ## 屬性裝飾器 ~~~ 1.通過下面案例可以得到屬性裝飾器,沒有'value' 屬性 ~~~ ~~~ function isEnumerable(params) { return (target, name, descriptor)=>{ console.log(target, name, descriptor) descriptor.enumerable = params console.log(descriptor) return descriptor } } class Person{ @isEnumerable(false) speak='12' } const person = new Person() for(let i in person){ console.log(i) // speak } ~~~ ![](https://box.kancloud.cn/5b65ed4cc816edfea688e4fb84815656_751x106.png)
                  <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>

                              哎呀哎呀视频在线观看