Các hàm mũi tên không được thiết kế để sử dụng trong mọi tình huống chỉ đơn thuần là một phiên bản ngắn hơn của các hàm kiểu cũ. Chúng không nhằm thay thế cú pháp hàm bằng functiontừ khóa. Trường hợp sử dụng phổ biến nhất cho các hàm mũi tên là "lambdas" ngắn không xác định lại this, thường được sử dụng khi chuyển một hàm dưới dạng gọi lại cho một số hàm.
Không thể sử dụng các hàm mũi tên để viết các phương thức đối tượng bởi vì, như bạn đã tìm thấy, vì các hàm mũi tên đóng trên thisngữ cảnh bao quanh từ vựng, thisbên trong mũi tên là hàm hiện tại mà bạn đã xác định đối tượng. Đó là để nói:
var chopper = {
    owner: 'Zed',
    getOwner: () => {
        return this.owner;    
    }
};
Trong trường hợp của bạn, muốn viết một phương thức trên một đối tượng, bạn chỉ nên sử dụng functioncú pháp truyền thống hoặc cú pháp phương thức được giới thiệu trong ES6:
var chopper = {
    owner: 'Zed',
    getOwner: function() {
        return this.owner;
    }
};
var chopper = {
    owner: 'Zed',
    getOwner() {
        return this.owner;
    }
};
(Có những khác biệt nhỏ giữa chúng, nhưng chúng chỉ quan trọng nếu bạn sử dụng supertrong getOwnerđó, bạn không sử dụng hoặc nếu bạn sao chép getOwnersang một đối tượng khác.)
Đã có một số cuộc tranh luận trên danh sách gửi thư es6 về một sự thay đổi trong các hàm mũi tên có cú pháp tương tự nhưng với cú pháp riêng của chúng this. Tuy nhiên, đề xuất này không được đón nhận nhiều vì đó chỉ là cú pháp cú pháp, cho phép mọi người tiết kiệm việc nhập một vài ký tự và không cung cấp chức năng mới so với cú pháp hàm hiện có. Xem các chức năng mũi tên không liên kết chủ đề .
     
              
thiskhác nhau. Nó được xác định bởi môi trường từ vựng nơi hàm được tạo, có nghĩa làthisgiá trị mà bạn tạochopperbiến sẽ làthisgiá trị của hàm. Nói cách khác, nó sẽ không tham chiếu đếnchopperđối tượng.