Próbuję rozszerzyć JavaScript Math
. Ale jedno mnie zaskoczyło.Rozszerzanie obiektu Math przez prototyp nie działa
Kiedy próbowałem przedłużyć go przez prototype
Math.prototype.randomBetween = function (a, b) {
return Math.floor(Math.random() * (b - a + 1) + a);
};
W konsoli mam błąd „nie można ustawić właściwość«randomBetween»undefined” ...
Ale gdybym asigne tę funkcję do Math.__proto__
Math.__proto__.randomBetween = function (a, b) {
return Math.floor(Math.random() * (b - a + 1) + a);
};
Wtedy wszystko działa poprawnie.
Czy ktoś może mi wyjaśnić, dlaczego działa w ten sposób? Doceniam każdą pomoc.
@GeorgeJempty Dlaczego nie lubisz "własnej własności"? – Oriol
@GeorgeJempty "własność własna" w JavaScript jest właściwością, która istnieje bezpośrednio na konkretnym obiekcie (w przeciwieństwie do tego, który jest dziedziczony przez łańcuch prototypów). Może łatwiej byłoby spojrzeć na to, czy zawierało cytaty, czy też były kursywą? – JLRishe
Dzięki za wyjaśnienia, cytaty pomogłyby, gdyby było inaczej, wygląda na to, że angielski jest zniekształcony. –