JavaScript

Gọi hàm với phương thức apply() trong JavaScript

Gọi hàm với phương thức apply() trong JavaScript
Được viết bởi Minh Hoàng

Series lập trình JavaScript, ngôn ngữ lập trình linh động, thực thi phía client.

Gọi hàm với phương thức apply() trong JavaScript

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

Phương thức JavaScript apply()

– Phương thức apply() tương tự như phương thức call() ở bài viết Gọi hàm với phương thức call() trong JavaScript.

– Trong ví dụ sau, phương thức getFullName của car object được áp dụng (applied) trên car1, car2:

Ví dụ:
var car = {
    getFullName: function() {
        return this.brand + " " + this.name;
    }
}
var car1 = {
    brand:"Toyota",
    name: "Prius 2018"
}
var car2 = {
    brand:"Ford",
    name: "Everest 2018"
}

car.getFullName.apply(car1);	// Toyota Prius 2018
car.getFullName.apply(car2);	// Ford Everest 2018
Try it »

Sự khác nhau giữa call() và apply()

– Phương thức call() nhận các đối số riêng lẻ.

– Phương thức apply() nhận một đối số như một mảng.

Phương thức apply() rất hữu ích khi bạn muốn sử dụng một mảng thay vì một danh sách đối số.

Phương thức apply() với các đối số (arguments)

– Phương thức apply() chấp nhận các đối số (arguments) trong một mảng:

Ví dụ:
var car = {
    getFullName: function(weight, color) {
        return this.brand + " " + this.name + ", " + weight + " kg, " + color;
    }
}
var car1 = {
    brand:"Toyota",
    name: "Prius 2018"
}
var car2 = {
    brand:"Ford",
    name: "Everest 2018"
}

car.getFullName.apply(car1, [850, "White"]);	// Toyota Prius 2018, 850 kg, White
car.getFullName.apply(car2, [950, "Red"]);		// Ford Everest 2018, 950 kg, Red
Try it »

– Trường hợp sử dụng phương thức call() thì các đối số (arguments) riêng lẻ được truyền vào:

Ví dụ:
var car = {
    getFullName: function(weight, color) {
        return this.brand + " " + this.name + ", " + weight + " kg, " + color;
    }
}
var car1 = {
    brand:"Toyota",
    name: "Prius 2018"
}
var car2 = {
    brand:"Ford",
    name: "Everest 2018"
}

car.getFullName.call(car1, 850, "White");		// Toyota Prius 2018, 850 kg, White
car.getFullName.call(car2, 950, "Red");			// Ford Everest 2018, 950 kg, Red
Try it »

Sử dụng apply() method mô phỏng tìm số lớn nhất trong mảng

– Bạn có thể tìm số lớn nhất (trong một danh sách các số) bằng cách sử dụng phương thức Math.max():

Ví dụ:
Math.max(1,2,3);				// return 3
Try it »

– Vì các mảng JavaScript không có phương thức max(), bạn có thể áp dụng phương thức Math.max() để thay thế.

Ví dụ:
Math.max.apply(null, [1,2,3]);	// also return 3
Try it »

– Đối số đầu tiên (null) không quan trọng. Nó không được sử dụng trong ví dụ này.

– Các ví dụ sau đây cũng cho kết quả tương tự:

Ví dụ:
Math.max.apply(Math, [1,2,3]);	// also return 3
Try it »

Ví dụ:
Math.max.apply(" ", [1,2,3]);	// also return 3
Try it »

Ví dụ:
Math.max.apply(0, [1,2,3]);		// also return 3
Try it »

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

1 bình luận

Translate »