apply方法的實現原理


apply 的核心原理:

  • 將函數設為對象的屬性
  • 執行和刪除這個函數
  • 指定 this 到函數並傳入給定參數執行函數
  • 如果不傳參數,默認指向 window
Function.prototype.myApply= function(content = window){
    content.fn = this; //此時this指向的是調用myApply的函數bar
    let res;
    if(arguments[1]){
        res = content.fn(...arguments[1]);  //函數bar的this已經發生變化,指向content
    }else{
        res = content.fn();  
    }
    delete content.fn;
    return res;
}

var obj = {
    value: 1
};
function foo(name, age) {
    console.log(name)
    console.log(age)
    console.log(this); //此時this已經發生變化了
    console.log(this.value);
}
foo.myApply(obj, ['Chocolate', 18]);

注意:當apply傳入的第一個參數為null時,函數體內的this會指向window。

參考:https://blog.csdn.net/weixin_42429718/article/details/106826134


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM