Method Reuse #
With the call()
method, you can write a method that can be used on different objects.
All Functions are Methods #
In JavaScript all functions are object methods.
If a function is not a method of a JavaScript object, it is a function of the global object (see previous chapter).
The example below creates an object with 3 properties, firstName, lastName, fullName.
Example #
var person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
person.fullName(); // Will return "John Doe"
The this Keyword #
In a function definition, this
refers to the “owner” of the function.
In the example above, this
is the person object that “owns” the fullName function.
In other words, this.firstName means the firstName property of this object.
Read more about the this
keyword at JS this Keyword.
The JavaScript call() Method #
The call()
method is a predefined JavaScript method.
It can be used to invoke (call) a method with an owner object as an argument (parameter).
With call()
, an object can use a method belonging to another object.
This example calls the fullName method of person, using it on person1:
Example #
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
var person2 = {
firstName:"Mary",
lastName: "Doe"
}
person.fullName.call(person1); // Will return "John Doe"
This example calls the fullName method of person, using it on person2:
Example #
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
var person2 = {
firstName:"Mary",
lastName: "Doe"
}
person.fullName.call(person2); // Will return "Mary Doe"
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName + "," + city + "," + country;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");