JavaScript giúp bạn dễ dàng ghi đè các thuộc tính và chức năng của đối tượng chung. Tôi muốn tìm cách kiểm tra xem phiên bản gốc của thuộc tính toàn cầu đã được thay thế chưa.Kiểm tra xem thuộc tính/chức năng toàn cầu đã được ghi đè trong JavaScript
Hãy xem xét một ai đó đặt này trong HTML của họ:
<script type="text/javascript">
window.encodeURIComponent = eval;
</script>
<script type="text/javascript" src="myscript.js"></script>
Nếu myscript.js gọi hàm encodeURIComponent nơi nào đó, bây giờ nó sẽ cư xử thất thường. Vì vậy, có một cách tôi có thể kiểm tra bên trong myscript.js nếu ai đó đã ghi đè chức năng đó trước khi tôi sử dụng nó?
Đây là cách thực sự thông minh và đa trình duyệt. – sg3s
Cảm ơn Stan. Bạn cũng biết làm thế nào để đảm bảo rằng thuộc tính toString của 'eval' không được ghi đè bằng một cái gì đó như hàm' function() {return "encodeURIComponent() {[native code]}"; } '? –
thay vì phân tích cú pháp và gọi 'toString', bạn chỉ cần thực hiện điều này' window.encodeURIComponent.name' .. BẤT CỨ có phương thức preciese hơn để đạt được http://stackoverflow.com/a/10266791/474290 –