Hàm call() và từ khóa this trong javascript
Định nghĩa ở W3schools thì With call(), you can use a method belonging to another object.
=>Theo em hiểu là với call(), bạn có thể sử dụng phương thức thuộc một đối tượng khác
Em có đoạn code sau:
function showMessage(message)
{
this.message = message;
return this;
}
var blog = showMessage.call({"blog" : "abc.com"}, " Cường");
console.log(blog);
Kết quả sau khi chạy:
[object Object] {
blog: “abc.com”,
message: “Cường”
}
Em muốn hỏi mọi người là đoạn return this;
có ý nghĩa gì, hàm call gọi đến đối tượng {"blog" : "freetuts.net"}
là sao và kết quả trả về tại sao lại ra được [object Object]
và message: "Cường"
Chạy đoạn code này hi vọng bạn hiểu.
để hiểu rõ thì bạn cần nắm được oop trong js, call thường được dùng trong kế thừa hay đa hình, lúc bạn đang dùng đối tượng cha hoặc con nhưng muốn dùng phương thức của con hoặc cha.
nhưng mà tại sao nó lại là đối tượng Object mà không phải đối tượng Window vậy anh?
Function.prototype.call()
Phương thức call() gọi một hàm với giá trị của this và các đối số riêng lẻ.
Truyền vào null , undefined thì this mới là window object. Bạn đọc bên trên để tham khảo thêm nhé