2016-02-20 15 views
7

tôi thấy ký hiệu này ở khắp mọi nơi trong Webpack tạo libs nhưng tôi không hiểu nó:Cú pháp javascript này có nghĩa là gì? (0, _parseKey2.default) (cái gì)

var a = (0, _parseKey2.default)(something) 

(0, _parseKey2.default) đứng cho? Tôi không nhớ nhìn thấy những biểu thức tách biệt hôn mê giữa dấu ngoặc đơn ở đâu đó trong các tham số chức năng, vì vậy có lẽ tôi chỉ thiếu một cái gì đó đơn giản.

Cảm ơn sự giúp đỡ của bạn.

+2

Đây là [dấu phẩy hành] (https://developer.mozilla.org/en/docs/Web/JavaScript/Tham khảo/Toán tử/Comma_Operator). Không có đầu mối mặc dù tại sao webpack là tạo ra những thứ như thế này, nhưng tôi đã thấy rằng, quá. –

Trả lời

17

Điều này là để cung cấp cho _parseKey2.default chính xác this (hoặc, thay vào đó, không this ở tất cả), nghĩa là, gọi nó là hàm bình thường, không phải là phương pháp. Xem xét:

var p = { 
    f : function() { 
     console.log(this) 
    }, 
    x : "foo" 
}; 

p.f();  // { f: ... x: foo } 
(p.f)(); // { f: ... x: foo } 
(0, p.f)(); // implicit global this 

Khái niệm dấu phẩy là một cách ngắn gọn hơn để làm điều này:

var unbound = p.f; 
unbound(); 
+6

Xem thêm trong [bài viết này] (http://www.2ality.com/2015/12/references.html). –

Các vấn đề liên quan