JS simulates the overloading of high-level languages recursively, and I add element nodes as an example:
//insert a new child element before the existing child elementvarBefore =function(elem,newelement,targetelement) {if(targetelement = = =Undefined)returnBefore (newelement? newelement.parentnode:NULL, elem,newelement); //compatible with IE7 the following target node is empty error problem if(!Targetelement)returnelem? Elem.appendchild (newelement):NULL; returnElem.insertbefore (newelement,targetelement);};//inserts a new child element after the existing child elementvarafter =function(elem,newelement,targetelement) {if(targetelement = = =Undefined) { returnAfter (newelement? newelement.parentnode:NULL, elem,newelement); } return!elem | | (elem.lastelementchild | | elem.lastchild) = = targetelement?//if the last node is the target element, it is added directly. Because the default is the lastBefore (elem,newelement,NULL) : //if it is not, it is inserted in front of the next sibling node of the target Element. Which is behind the target Element.Before (newelement, targetelement.nextelementsibling | |targetelement.nextsibling);};//Call:varElem = getElementById (' D1 ')), newelement= document.createelement (' Div '), targetelement= Elem.firstelementchild | |Elem.firstchild;before (elem,newelement,targetelement); before (newelement,targetelement); after (elem, newelement,targetelement); after (newelement,targetelement);
JS Analog High-level language overload