// call 的特点
// 1)可以改变当前函数的this指向
// 2)还会让当前函数执行
// 3)第一个参数改变当前参数的this,后面的参数在当前参数的arguments获取
// function fn1() {
// console.log(this,arguments)
// }
// fn1.call('hello',1,2,3,4)
// function fn1() {
// console.log(1)
// }
// function fn2() {
// console.log(2)
// }
// fn1.call.call.call(fn2) // 2 执行了fn2
Function.prototype.call = function (context) {
context = context ? Object(context) : window;
context.fn = this; // 让传入的this.fn执行,相当于fn的this指向的是.前面的,也就是传入的this
let args = [];
for (let i = 1; i < arguments.length; i++) {
args.push('arguments[' + [i] + ']')
} // args = ["arguments[1]","arguments[2],"arguments[3]""]
let r = eval('context.fn(' + args + ')');
delete context.fn;
return r
}
function fn1() {
console.log(1)
}
function fn2() {
console.log(2)
}
fn1.call('hello', 1, 2, 3, 4, 5);
fn1.call.call.call(fn2);
javascript中的call
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在JavaScript中,如果想要改变当前函数调用的上下文对象的时候,我们都会联想到call、apply和bind...
- bind函数作用、应用场景以及模拟实现 this、apply、call、bind,这篇不错 js中的call(),...
- JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上...
- 作用 硬绑定函数的this 区别 call()和apply() 传第二个参的区别,call传入多个单独的参数,ap...
- 我这种人啊 可能压根就不适合恋爱 一辈子单着 或许才是 最好的安排 只是眼看着爱情 在我的全世界招摇过市 耳听着婚...