Hàm Call trong JavaScript

phương thức tái sử dụng

Sử dụng call() Phương thức, bạn có thể viết phương thức có thể được sử dụng trên các đối tượng khác nhau.

Hàm là phương thức của đối tượng

Trong JavaScript, hàm là phương thức của đối tượng.

Nếu một hàm không phải là phương thức của đối tượng JavaScript, thì nó là hàm của đối tượng toàn cục (xem chương trước).

Dưới đây là ví dụ tạo đối tượng có ba thuộc tính (firstNamelastNamefullName)。

Mẫu

var person = {
    firstName:"Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
person.fullName();		// sẽ trả về "Bill Gates"

Thử ngay

Thuộc tính fullName là mộtPhương thức。Đối tượng person là phương thức củaChủ thể.

Thuộc tính fullName thuộc Phương thức của đối tượng person.

Phương thức JavaScript call()

call() Phương thức là phương thức JavaScript được định nghĩa sẵn.

Nó có thể được sử dụng để gọi phương thức của đối tượng chủ thể với đối tượng chủ thể làm tham số.

Qua đó call(),Bạn có thể sử dụng phương thức của đối tượng khác.

Ví dụ này gọi phương thức fullName của person và sử dụng cho person1:

Mẫu

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person1);  // sẽ trả về "Bill Gates"

Thử ngay

Ví dụ này gọi phương thức fullName của person và sử dụng cho person2:

Mẫu

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person2);  // sẽ trả về "Steve Jobs"

Thử ngay

Phương thức call() có tham số

Phương thức call() có thể chấp nhận các tham số:

Mẫu

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"Bill",
  lastName: "Gates"
}
person.fullName.call(person1, "Seattle", "USA");

Thử ngay