Cách "có thẩm quyền" để phát hiện xem biến số _
có được tải bằng lodash hoặc dấu gạch dưới không?Phát hiện nếu _ là lodash hoặc gạch dưới
Tôi đang sử dụng lodash cho dự án trong môi trường nơi underscoređôi khi có thể cũng được tải.
Hiện nay, tôi đã đi lên với điều này:
/**
* lodash defines a variable PLACEHOLDER = '__lodash_placeholder__'
* so check if that is defined/contains the string "lodash"
*/
if (typeof(_.PLACEHOLDER) == 'undefined' || _.PLACEHOLDER.indexOf('lodash') < 0) {
// _ is underscore, do what I need to access lodash
}
Cập nhật quan trọng: Đoạn mã trên không làm việc!
Có cách nào "có thẩm quyền" để phát hiện xem _
có phải là lodash hoặc gạch dưới không?
Ghi chú:
Đây là một yêu cầu cụ thể để tìm một cách để xác định xem lodash hoặc dấu gạch dưới được nạp trong biến _
:
1. Đó là ngoài tầm kiểm soát của tôi liệu gạch được nạp hay không. (lodash là trong tầm kiểm soát của tôi và sẽ luôn được tải).
2. Thứ tự tải của lodash/underscore không thể dựa vào.
3. Phiên bản gạch dưới được tải có khả năng thay đổi (đó là một phần của khung CMS có thể được cập nhật).
4. Lodash 4.17.x có hơn 300 chức năng. Mã của tôi sử dụng nhiều của các hàm trong lodash.
5. Lodash chứa nhiều chức năng gạch dưới không cung cấp.
6. Một số chức năng tồn tại trong cả hai thư viện có các triển khai khác nhau.
Điều duy nhất tôi có thể nghĩ đến là '_ .VERSION' hiện diện trong 'lodash' nhưng không có trong' underscore' – bhantol
@bhantol: dấu gạch dưới có 'VERSION' (ít nhất là phiên bản trên trang web của nó). –
'isLodash = _.toString().indexOf ('lodash')> = 0 ' – bhantol