##### 17 JavaScript 中的call和apply 對於咱們逆向工程師而言. 並不需要深入的理解call和apply的本質作用. 只需要知道這玩意執行起來的邏輯順序是什麼即可 在運行時. 正常的js調用: ```js function People(name, age){ this.n ...
17 JavaScript 中的call和apply
對於咱們逆向工程師而言. 並不需要深入的理解call和apply的本質作用. 只需要知道這玩意執行起來的邏輯順序是什麼即可
在運行時. 正常的js調用:
function People(name, age){
this.name = name;
this.age = age;
this.chi = function(){
console.log(this.name, "在吃東西")
}
}
p1 = new People("zzc", 18);
p2 = new People("wyy", 20);
p1.chi(); // zzc 在吃東西
p2.chi(); // wyy在吃東西
接下來, 我們可以使用call和apply也完成同樣的函數調用
function People(name, age){
this.name = name;
this.age = age;
this.chi = function(what_1, what_2){
console.log(this.name, "在吃", what_1, what_2);
}
}
p1 = new People("zzc", 18);
p2 = new People("wyy", 20);
p1.chi("饅頭", "大餅"); // zzc在吃 饅頭 大餅
p2.chi("大米飯", "麵條"); // wyy在吃 大米飯 苗條
function eat(what_1, what_2){
console.log(this.name, "在吃", what_1, what_2);
}
// call的語法是: 函數.call(對象, 參數1, 參數2, 參數3....)
// 執行邏輯是: 執行函數. 並把對象傳遞給函數中的this. 其他參數照常傳遞給函數
eat.call(p1, "查克拉", "元宇宙"); // zzc 在吃 查克拉 元宇宙
apply和他幾乎一模一樣. 區別是: apply傳遞參數要求是一個數組。
eat.apply(p1, ["苞米茬子", "大餅子"]); // zzc 在吃 苞米茬子 大餅子
本文來自博客園,作者:生而自由愛而無畏,轉載請註明原文鏈接:https://www.cnblogs.com/zczhaod/p/17650220.html