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

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

IE kötülükten dolayı – Jimmy

+1

Bu sorunun yanıtına bakın: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –

+1

no, Array.prototype.slice.call (argümanlar, 1) tamam. – galambalazs

cevap

10

alertt.apply problemdir. Uyarı, dilinin bir parçası değil, bu yüzden bir işlev bile olmayabilir. uygulama bağımlı'dir.

+4

Right - IE, API'leri pencere üzerinde ve DOM öğelerinde Javascript'e maruz bırakır, ancak pozlama sınırlıdır ve genellikle "gerçek" Javascript bileşenleriymiş gibi davranamazsınız. – Pointy

+0

+1 galambalazlarla aynı fikirdedir. – Krunal

+0

İyi bir nokta, ancak sonra bu çalışma yapılmamalıdır: var shell = işlev {yöntem} { var fn = window [method]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (argümanlar, 1)); }; kabuk ('uyarı', 'maymun!'); – shawndumas

İlgili konular