JavaScript dấu hai chấm (toán tử liên kết)


129

Như bạn biết, có một đề xuất cho một phím tắt cho .bind()chức năng, vì vậy bạn có thể viết:

::this.handleStuff

và nó sẽ hoạt động như thế trong es5:

this.handleStuff.bind(this)

Câu hỏi của tôi là: liệu có thể vượt qua các đối số theo cách này?

Tôi có nghĩa là một cách viết này với các phím tắt đã nói ở trên:

this.handleStuff.bind(this, 'stuff')

Đây là một mô hình khá phổ biến trong React, vì vậy thật tuyệt khi rút ngắn nó lại một chút.


1
Bạn đang nói về ứng dụng một phần?
Ben Aston

Có vẻ như một ý tưởng tốt cho một đề xuất thông số kỹ thuật khác.
Greg Herbowicz

Câu trả lời:


154

Không. Toán tử liên kết ( đề xuất spec ) có hai loại:

  • Phương pháp trích xuất

    ::obj.method      obj.method.bind(obj)
  • các cuộc gọi "phương thức ảo"

    obj::function     function.bind(obj)
    obj::function(…)  function.call(obj, …)

Không ai trong số họ có tính năng ứng dụng một phần . Đối với những gì bạn muốn, bạn nên sử dụng một chức năng mũi tên:

(...args) => this.handleStuff('stuff', ...args)  this.handleStuff.bind(this, 'stuff')

4
(Có một số cuộc thảo luận về việc hỗ trợ ứng dụng một phần)
Bergi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.