2010-07-06 43 views
9
var shell = function (method) { 
     window[method].apply(null, Array.prototype.slice.call(arguments, 1)); 
    }; 

shell('alert', 'monkey!'); 
+12

vì IE là ác – Jimmy

+1

Xem câu trả lời cho câu hỏi này: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –

+1

no, Array.prototype.slice.call (đối số, 1) là ok. – galambalazs

Trả lời

10

alert.apply là sự cố. Cảnh báo không phải là một phần của ngôn ngữ, vì vậy nó có thể không phải là một chức năng. Đó là phụ thuộc thực hiện.

+4

Quyền - IE phơi bày các API trên 'cửa sổ' và trên các phần tử DOM đối với Javascript, nhưng việc tiếp xúc bị hạn chế và bạn thường không thể xử lý những thứ như thể chúng là các thành phần Javascript" thực ". – Pointy

+0

+1 đồng ý với galambalaz. – Krunal

+0

Điểm tốt, nhưng sau đó không nên làm việc này: var shell = function (phương pháp) { var fn = window [method]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (đối số, 1)); }; vỏ ('cảnh báo', 'khỉ!'); – shawndumas

Các vấn đề liên quan