Câu hỏi này có liên quan đến What are the best practices to follow when declaring an array in Javascript?Bạn có thể thêm chức năng vào một Array bị tấn công không?
Hãy nói rằng một khách hàng, hãy gọi cho họ "D. B. Cooper", có một yêu cầu đầu tiên mà các mã sau đây phải chạy trước bất kỳ mã JavaScript khác:
Array = function(){
alert('Mwahahahaha');
};
Bên cạnh đó, Cooper yêu cầu phải thêm các hàm tùy chỉnh vào đối tượng Array
được xây dựng (không phải là đối tượng bị tấn công). Ví dụ, nếu Array
được unhijacked, điều này sẽ được thực hiện với:
Array.prototype.coolCustomFunction = function(){
alert('I have ' + this.length + ' elements! Cool!');
};
Trong đó sẽ đủ khả năng:
var myArray = [];
myArray.coolCustomFunction();
Tuy nhiên, điều này không phù hợp với yêu cầu đầu tiên. Vì vậy, làm thế nào bạn có thể đáp ứng tốt nhất cả hai yêu cầu của D. B. Cooper?
Lưu ý: D.B. thậm chí đã viết a test fiddle để giúp đảm bảo các giải pháp đáp ứng yêu cầu của mình ... một chàng trai!
Cập nhật: Đối với những người thích một thách thức: hãy cố gắng tìm một giải pháp qua trình duyệt unhijackable cho vấn đề này. Ví dụ: here's trường hợp kiểm tra bị tấn công thậm chí còn nhiều hơn (nhờ định dạng lại Bergi này) tấn công Array, Object, Array.prototype.constructor và Object.prototype.constructor. Cho đến nay, có vẻ như có một giải pháp cụ thể cho trình duyệt này (xem Bergi's comment on his answer và cho chúng tôi biết nếu bạn tìm cách xâm nhập nó trong FF), nhưng hiện chưa rõ liệu có trình duyệt chéo hay không giải pháp này.
Định dạng của câu hỏi này cần được yêu cầu tài liệu nghiên cứu cho các áp phích mới trên SO – rjz
Gửi yêu cầu về tài liệu cho DB Cooper và nhấn mạnh vào các trường hợp sử dụng cho mọi nhu cầu. :) – Quentin
@Quentin: Nếu bạn có thể tìm thấy anh ấy, đó sẽ là một lựa chọn tốt :) – Briguy37