Hầu hết các trang web đều nói "callee" là thuộc tính của Function.arguments không được chấp nhận. Nhưng một số trang web đi xa hơn và nói rằng toàn bộ hàm Functions.argument không được chấp nhận Ví dụ: http://aptana.com/reference/api/Arguments.html Tại sao chỉ đề cập đến callee nếu toàn bộ thói quen chết trong nước? Tôi chỉ mới phát hiện ra "tranh luận" và có vẻ như ví dụ cực kỳ hữu ích: http://hungred.com/how-to/secret-arguments-array-javascript/Javascript: mảng đối số không được chấp nhận?
Trả lời
Function.arguments
là bị phản đối, nhưng nó chỉ phản đối ủng hộ của vani arguments
đối tượng đó là có sẵn trong một hàm. (ví dụ: sử dụng x = arguments[i];
thay vì x = theFunc.arguments[i];
)
Phương pháp này được ưu tiên (và như bạn nói, cực kỳ hữu ích) để truy cập đối số thứ tự nhận được.
callee không được dùng nữa, nhưng các đối số được sử dụng trong nhiều ứng dụng. Tôi không biết liệu đối số có bị phản đối hay không. Bạn có thể sử dụng nó để có được tất cả các tham số của một hàm, ngay cả khi không được xác định trong hàm (params).
Hầu hết thời gian tôi sử dụng khi phát triển plugin jQuery. Một cái gì đó như:
$.fn.tooltip = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
};
Như bạn thấy chỉ phương pháp được thông qua như là một tham số, nhưng trong những người đầu tiên nếu các đối số được chia sau khi giá trị đầu tiên. Bằng cách này bạn có thể truyền tên hàm và tất cả các tham số được sử dụng bởi hàm này.
Không, mảng đối số không tán thành trong phiên bản 5.1 mới nhất của đặc điểm kỹ thuật (xem trang 60). Tuy nhiên, đối tượng caller
sẽ chỉ khả dụng nếu mã không ở chế độ nghiêm ngặt.
Afaik arguments
không được dùng nữa làm tài sản của hàm. Xem this MDN-link hoặc this one
- 1. Đối số chấp nhận con trỏ hàm
- 2. thông số mạnh mẽ không chấp nhận mảng
- 3. Chấp nhận tham số dưới dạng đối tượng riêng lẻ hoặc dưới dạng mảng đối tượng
- 4. initWithContentsOfFile Không được chấp nhận
- 5. File.toURL() không được chấp nhận?
- 6. Livequery không được chấp nhận
- 7. Cho phép chức năng javascript chấp nhận bất kỳ số lượng đối số nào
- 8. getch không được chấp nhận
- 9. Đường ray - Cách chấp nhận một mảng đối tượng JSON
- 10. setFont Không được chấp nhận?
- 11. dismissModalViewControllerAnimated không được chấp nhận
- 12. glEnableClientState không được chấp nhận
- 13. Enum.ToString() không được chấp nhận?
- 14. stringWithContentsOfFile Không được chấp nhận
- 15. Làm thế nào để đếm số đối số được chuyển đến một hàm chấp nhận một số biến đối số?
- 16. Ý nghĩa không được chấp nhận?
- 17. Tại sao đối tượng có thuộc tính trùng lặp được chấp nhận trong JavaScript?
- 18. Hibernate có được chấp nhận không?
- 19. Tại sao Date.getTimezoneOffset không được chấp nhận?
- 20. Nhóm hoạt động không được chấp nhận
- 21. Tạo một kịch bản chấp nhận đối số dòng lệnh
- 22. RKResponseDescriptor trong RESTKit không được chấp nhận
- 23. Android PowerManager WakeLock - Không được chấp nhận
- 24. NSOpenPanel - Mọi thứ không được chấp nhận?
- 25. fopen cảnh báo không được chấp nhận
- 26. Đi qua đối số biến khác chức năng chấp nhận một danh sách đối số biến
- 27. Tạo: LDLIBS, không được chấp nhận?
- 28. Hibernate - AnnotationConfiguration không được chấp nhận
- 29. directoryContentsAtPath không được chấp nhận iOS 4
- 30. Xử lý android.text.ClipboardManager không được chấp nhận
Ah, điều đó giải thích! Cảm ơn nhiều. –
Điều này có ý nghĩa. Nếu Javascript bao giờ muốn một số hỗ trợ đa luồng, các đối tượng toàn cục như vậy đang giết chết. –
Tại sao 'Function.arguments' không được chấp nhận? Nó cho phép bạn truy cập trực tiếp vào các đối số của một hàm cha bên trong một hàm lồng nhau, đây là một cái gì đó bạn không thể làm với đối tượng 'arguments'. – Taurus