Мне нужна была функция для генерации псевдослучайного целого числа между m и n, и поэтому я подумал: «Я знаю, я расширю Math методом randrange
, похожим на метод Python».
Math.constructor.prototype.rand = function rand(min, max) {
return min + Math.floor(Math.random() * (max + 1 - min));
};
Кажется, это работает, но когда я поместил его в свой интегрированный код, у меня возникло несколько проблем с сообщениями об ошибках, таких как "[эта функция] не имеет метода addEventListener '".
Суть моего вопроса заключается в следующем: есть ли что-то принципиально неправильное в том, как я расширил Math
здесь? Должна ли эта функция иметь такой метод, а если нет, почему jwplayer запрашивает его?
Ниже я привел гораздо больше подробностей, но если вам уже скучно и вы хотите начать постулировать ответы, вы можете пропустить остальные.
Когда я пошел тестировать интегрированный код, я увидел эту ошибку:
jwplayer.js:1 Uncaught TypeError: Object function rand(min, max) {
return min + Math.floor(Math.random() * (max + 1 - min));
} has no method 'addEventListener'
jwplayer.js:1 a.plugins.pluginloader.load
jwplayer.js:1 a.embed
jwplayer.js:1 b.api.setup
script.js:155 (anonymous function)
jquery-1.6.4.js:660 jQuery.extend.each
jquery-1.6.4.js:274 jQuery.fn.jQuery.each
script.js:150 jQuery.click.window.Modernizr.input.required
jquery-1.6.4.js:1016 jQuery.extend._Deferred.deferred.resolveWith
jquery-1.6.4.js:437 jQuery.extend.ready
jquery-1.6.4.js:923 DOMContentLoaded
Вот фрагмент из script.js, на который ссылается выше:
// Setup the video player:
$("video").each(function (i, e) {
// Switching out ids like this is a horrible hack,
// but apparently it's the only way jwplayer will load.
var oldId = $(e).attr('id');
$(e).attr("id", "tmpVideoSetup");
jwplayer("tmpVideoSetup").setup({
flashplayer: window.CDN + "/js/libs/mediaplayer-5.7-licensed/player.swf",
levels: [
// TODO: set this up to dynamically choose the videos to play.
{ file: window.CDN + "/videos/LK_About.mp4" },
{ file: window.CDN + "/videos/LK_About.wmv" }
]
});
$(e).attr("id", oldId);
});
Когда я удаляю код загрузки видео, все остальное ведет себя как ожидалось.