01/10/2018, 14:19

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]message: "Cường"

Đào An viết 16:21 ngày 01/10/2018
function showMessage(message){
  console.log('this is:', this)
  this.message = message;
  console.log('this.message is:', this.message)
  console.log('now this is:', this)
  return this;
}
var blog = showMessage.call({"blog" : "abc.com"}, " Cường");



Chạy đoạn code này hi vọng bạn hiểu.

kiencon viết 16:20 ngày 01/10/2018

để 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.

Đức Thái viết 16:32 ngày 01/10/2018

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?

Đào An viết 16:24 ngày 01/10/2018

Tài liệu Web MDN

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é

Bài liên quan
0