2013-03-18 13 views
7

Opracowałem bibliotekę JavaScript, która wymaga metody bind. Niestety, bind nie jest obsługiwane przez IE8.Czy istnieje ryzyko związane z używaniem polyfill bind MDN?

Są polyfill on the MDN website, które działają dobrze.

Moje pytanie brzmi: Czy występują problemy lub możliwa niezgodność między tym polyfillem a innymi bibliotekami Javascript?

Jest bezpieczny w użyciu w każdym przypadku?

+0

próbowałaś kod zgodności ich dostarczenia na stronie MDN? https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind – Sebas

+0

Tak, i wygląda na to, że działa dobrze. Ale czy mogę być pewny, że tak jest w każdych okolicznościach? – BAK

+0

Nie jest to DUŻA okoliczność, ale większość. – backdesk

Odpowiedz

6

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility

dla mnie najbardziej oczywistych różnic z natywnym bind są:

IMHO, jeśli używasz tylko "dobrych części" JavaScript, a nie rozwijasz rdzenia jakiegoś frameworka (dla IE8?), Nie powinieneś mieć żadnych problemów z tą polyfillą.

2

Odpowiedź jest dość dużo tam na stronie MDN samego:

„Jeśli zdecydujesz się skorzystać z tej częściowej realizacji, nie wolno powoływać się na tych przypadkach, w których zachowanie odbiega od ECMA-262, 5th Edition z niektórych jednak opieka (i być może z dodatkowymi modyfikacjami dostosowanymi do konkretnych potrzeb), ta częściowa implementacja może być rozsądnym pomostem do czasu, kiedy bind() jest szeroko implementowany zgodnie ze specyfikacją. "

Nie ma nic złego w podkładce MDN jako takiej. Jeśli jednak zdecydujesz się na użycie podkładki, upewnij się, że nie może ona zostać nadpisana przez inne biblioteki. Jakiś czas temu miałem problem z tym, że Strophe właśnie to zrobił i zastąpił jedną podkładkę drugą.

Zwykle używam podkreślnika, aby objąć takie rzeczy, ale są też inne opcje, takie jak es5shim. Z podkreśleniem masz metodę o nazwie (zgadłeś) ".bind" i działa trochę inaczej niż podkładka MDN (używa "nowego" wywołania). Podsumowanie ma również świetną metodę o nazwie " .partial", która może być przydatna w scenariuszach, w których nie chcesz zmieniać wartości "tego", ale częściowo zastosować argumenty.

Chodzi mi tutaj o to, że zamiast przycinania, może zajrzeć do czegoś, co jest odpowiednio chronione/zamknięte w bibliotece. Prawdopodobnie będziesz potrzebował więcej niż jednego podkładki, jeśli kierujesz reklamy na przeglądarki takie jak IE8.

Wreszcie, i nie tak ważne sprawdzeniu testów wydajności w: http://jsperf.com/browser-vs-es5-shim-vs-mdn-shim

Powiązane problemy