Tôi đang xem qua sốcủa John Resig và tôi không hiểu rõ sự khác biệt giữa các cuộc gọi sau đây: (xin lưu ý rằng 'đối số' là từ được xây dựng trong javascript và là không chính xác một mảng do đó hack với Array.slice thay vì chỉ đơn giản gọi arguments.slice)Sự khác biệt giữa Array.slice và Array() slice
>>> arguments
[3, 1, 2, 3]
>>> Array.slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array.slice.call(arguments, 1)
[]
>>> Array().slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array().slice.call(arguments, 1)
1,2,3 0=1 1=2 2=3
về cơ bản sự hiểu lầm của tôi nắm chênh lệch giữa Array.slice và array(). lát. Chính xác là sự khác biệt giữa hai cái này và tại sao Array.slice.call không hoạt động như mong đợi? (đó là trả lại tất cả trừ phần tử đầu tiên của danh sách đối số).
Tôi không biết nó hoạt động như thế nào trong trình duyệt '08, nhưng vào đầu năm 2013, 'String.substring.call' ném TypeError trong Chrome (vì hàm tạo' String' không có thuộc tính 'chuỗi con') . – bfavaretto
@bfavaretto, Firefox (một mình) triển khai 'Array.slice' và' String.substring'. Người hỏi chắc chắn đã sử dụng Firefox khi anh ta đang thử việc này. –
Cảm ơn thông tin, @NathanWall. Đó là khá lạ của Firefox, có lẽ một cái gì đó họ thêm vào như là một phím tắt để 'String.prototype.substring' et al. cho khả năng tương thích ngược ... và dường như nó được gắn bó trong một thời gian. – bfavaretto