Polymorfi och javascript
By Anatoly Mironov
En skräckscenario: du använder två javascript-bibliotek. Men de har var sin funktion som har samma namn. Det spelar även ingen roll om antalet inparametrar är olika. Så det blir samma sak som myfunc(param1, param2) och myfunc(param1). Grejen är att funktionen som laddas sist är den som kommer köras. Katastrof! Men det finns lösningar. Börja läsa här om hur man kan simulera polymorfi i javascript på about.com. Säg vi har en funktion som heter MoveToDate(strdate, ctxid) den ingår i init.debug.js (som används av Sharepoint kalenderwebpart). Sedan har vi något annat javascript-bibliotek som också har MoveToDate(param). Låt oss göra det polymorfiskt. Här är koden:
<script type="text/javascript"
src="/\_layouts/yourproject/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
MoveToDate = function(dt, ctxid) {
if(ctxid != undefined) {
ULSA13:;
CoreInvoke('\_MoveToDate', dt, ctxid);
}
else {
//Do what other MoveToDate(param) should have done
}
};
});
</script>
```Så, svårt är det inte. Det måste dock definieras allra sist, det är därför det körs i jquery-funktionen ready. window.onload funkar inte riktigt.