Nhìn dưới mui xe trong UnderscoreJS, tôi thấy:Tại sao UnderscoreJS sử dụng toString.call() thay vì typeof?
_.isFunction = function(obj) {
return toString.call(obj) == '[object Function]';
};
_.isString = function(obj) {
return toString.call(obj) == '[object String]';
};
_.isNumber = function(obj) {
return toString.call(obj) == '[object Number]';
};
Điều này có vẻ như một sự lựa chọn lẻ. Tại sao không chỉ sử dụng typeof để xác định xem một giá trị là một chuỗi, hàm hay số? Có hiệu suất đạt được bằng cách sử dụng toString? Typeof không được hỗ trợ bởi các trình duyệt cũ hơn?
'typeof' đã tồn tại trong mọi phiên bản JavaScript kể từ phiên bản 1.1 năm 1996. –