Переопределение метода Math.random()

Рейтинг: 2Ответов: 1Опубликовано: 26.04.2015

Меня не совсем устраивает стандартный Math.random() и я хотел бы переопределить его, написав свою функцию. Возможно ли это?

Само собой вы скажите: "Сделайте функцию MathRandom!", тут все понятно, я не спорю, но интересен именно момент с переопределением.

В JS не так давно, пробовал через prototype, но увы, без результата.

Ответы

▲ 4Принят
Math.random = function(){alert(1);}
Math.random() //выведет алерт

И не нужно с прототипом ничего делать Если в переопределённой функции нужно использовать метод поумолчанию то сохраните на него ссылку перед затиранием.

var oldRandom = Math.random;
Math.random = function(){
    //pre logic
    oldRandom.call(this); //вызов старого рандома
    //post logic
}

Не знаю точно нужно ли применять контекст выполнения, но лучше перестраховаться, вдруг там вызовы других методов