The usage of
is wrong in itself. The first parameter of call and apply is the this passed to it when the target function is called. You use this to pass the function to this to call or apply , so it's wrong, but just happens to support this calling method in the first way.
you need to figure out the function and difference between call () and apply () , both of which change the direction of the this object. For example:
var obj = {
name:"abcd"
}
function fn1(){
console.log(this.name);//undefined
}
function fn2(){
fn1.call(obj,null);
console.log(this.name);//abcd
}
replacing call with apply has the same result. The difference between the two is that the passed parameter, the first parameter is the object to be changed, the second parameter is different, call passes an array item parameter, apply passes an array parameter, or it can be the function's arguments object. For example,
var obj2 = {
name:'abcd',
sex:'xx'
}
function fn1(name,sex){
return name + sex;
}
function fn2(){
return fn1.apply(obj2,['hhh','male']);//hhhmale
}
both methods are non-inherited.
thanks for inviting ~ you can read these two articles, and then look back at your own questions, which should answer your questions.
JS Magic Hall: get to know Function.prototype.call
interviewer asked: can you simulate the call and apply methods of JS