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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 一、概述 在 javascript 中,call 和 apply 都是為了改變某個函數運行時的上下文context而存在的,換句話說,就是為了改變函數體內部 this 的指向; JavaScript 的一大特點是,函數存在 定義時上下文 和 運行時上下文以及上下文是可以改變的這樣的概念; ## 二、例子 ``` function Dog(name){ this.name = name; } Dog.prototype.say = function(message){ console.log(this.name + ' say '+ message); } let dog = new Dog('小黃'); dog.say('汪汪'); //小黃 say 汪汪 ``` 但是我們也有一個Cat方法,也需要Dog方法中的say方法,如果像上面Dog方法一樣再寫一遍的話真的是太浪費時間,就要使用Call或者Apply方法來使我們的Cat方法來繼承Dog方法; ``` function Cat(name){ this.name = name; } let cat = new Cat('小喵'); //call dog.say.call(cat, '喵喵'); //小喵 say 喵喵 //apply dog.say.apply(cat, ['喵喵']); //小喵 say 喵喵 ``` 這樣的話,Cat方法就繼承了Dog方法中的say方法,這樣我們就不用在Cat方法中再去寫一遍Say方法; >[danger] 可以看出 call 和 apply 是為了動態改變 this 而出現的,當一個對象中沒有某個方法,但是其他的對象有這個方法,我們可以借助call或apply用其它對象的方法來操作。 ## 三、call和apply的區別 雖然call和apply的作用一樣,都是動態的改變this的指向,但使用時兩者還是有一定的區別,這個主要體現在傳參方式上: ``` function fun(arg1, arg2, ...){ // Your code ... } fun.call(this, arg1, arg2, ...) fun.apply(this, [arg1, arg2, ...]) ``` 在call方法中,是把參數放進去依次傳遞,參數可以有多個;在apply方法中,是把參數放在一個數組中傳遞,所以參數只有兩個; 所以當你不知道參數數量時,就使用apply方法,先把參數push進一個數組里,然后再進行傳遞,當知道參數數量時,用call和apply都可以;
                  <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>

                              哎呀哎呀视频在线观看