01/10/2018, 14:55
Sự khác nhau giữa prototype function và function bình thường trong Javascript?
Chào mọi người, em đang học Javascript, hiện tại đang học đến phần object prototypes trên mozilla, có lẽ vì tiếng Anh còn hạn chế nên việc đọc hiểu còn thiếu sót nên mong mọi người cho em hỏi giữa 2 cách tạo function sau, có gì khác biệt vậy ạ:
function exFunction() {
this.a = function() {
window.alert('something');
}
}
và
function exFunction() {
}
exFunction.prototype.a = function() {
window.alert('something');
}
Cảm ơn mọi người ạ.
Bài liên quan
Mình xét một ví dụ như sau:
Khi bạn muốn tạo function theo approach này thì bạn phải thận trọng với
this
. Vì this sẽ được sử dụng với context của object gọi nó. Ví dụ khi bạn gọi hàmexFunction
thì kết quả sẽ là như thế nào?Bạn đã vô tình thêm 1 property vào object
window
hoặcglobal
. Còn khi bạn dùng prototype thì sẽ không bị như vậy.Một lưu ý nữa là khi bạn dùng
this.
thì các instance củaexFunction
sẽ sử dụng phương thức riêng của nó.Bạn có thể thấy các instance sử dụng function của nó độc lập với nhau. Còn khi sử dụng prototype:
Khi dùng
prototype
thì các instance sẽ dùng chung share property qua[[Prototype]]
Giờ em cũng biết được sự khác nhau giữa 2 cái rồi ạ, em cảm ơn anh nhiều lắm.