The introduction to call() on Mozilla’s official website is:
Call() parameters
thisArg
The call() method in Javascript
Don’t pay attention to the complicated explanations above and start the process step by step.
Instance of Call() method
So I wrote another Hello, World:
Next, let’s look at another example.
print.call(obj, "Hello", "World");
Only here, what we pass in is still undefined, because the undefined in the previous example is because a parameter needs to be passed in. This doesn't really reflect the usage of call. Let's look at a better example.
var h={p1:"hello", p2:"world", print:print};
h.print("fd");
var h2={p1:"hello", p2:"world"};
print.call(h2, "nothing");
Call means borrowing other people’s methods and objects to call, just like calling your own. In h.print, when the function is called as a method, this will point to the relevant object. It's just that in this example we didn't understand whether h2 called print or print called h2. So I cited Mozilla’s example
if (price < 0)
throw RangeError('Cannot create product "' name '" with a negative price');
Return this;
}
function Food(name, price) {
Product.call(this, name, price);
This.category = 'food';
}
Food.prototype = new Product();
var cheese = new Food('feta', 5);
console.log(cheese);
var h2= function(no){
This.p1 = "hello";
This.p2 = "world";
Print.call(this, "nothing");
};
h2();
h2 here acts as a receiver to call the function print. As in the Food example, within a child constructor, you can implement inheritance by calling the call method of the parent constructor.
As for the advantages of the Call method, they are introduced in "Effective JavaScript".
1. Use the call method to customize the receiver to call the function.
2. Use the call method to call methods that do not exist in the given object.
3. Use the call method to define higher-order functions that allow users to specify receivers for the callback function.