{"id":44,"date":"2009-09-17T21:50:42","date_gmt":"2009-09-17T18:50:42","guid":{"rendered":"http:\/\/ramuuns.id.lv\/blog\/?p=44"},"modified":"2016-01-03T16:33:08","modified_gmt":"2016-01-03T14:33:08","slug":"js-code-assist-in-js","status":"publish","type":"post","link":"https:\/\/ramuuns.com\/blog\/2009\/09\/17\/js-code-assist-in-js\/","title":{"rendered":"JS code assist in JS"},"content":{"rendered":"<p>Grib\u0113ju tev manu d\u0101rgo las\u012bt\u0101j izst\u0101st\u012bt par savu \u0161\u012bsned\u0113\u013cas naktsprojektu. N\u0113, n\u0113, nejau to, kur l\u012bdz turpat trijiem nakt\u012b tiek nost\u0101v\u0113ts \u013be\u0146ingrad\u0101, jo sarunas ar Uldi, Andri un Aneti ir for\u0161as &#8211; par to lai Andris uzraksta <a href=\"http:\/\/luckanisms.com\">Luck\u0101nism\u0101<\/a>.<\/p>\n<p>Es te par citu savu izklaidi &#8211; <a href=\"https:\/\/ramuuns.com\/blog\/math-js\/\">Math.js<\/a> un t\u0101 test\u0113\u0161anas un izmanto\u0161anas\u00a0<a href=\"https:\/\/ramuuns.com\/math.js.html\">konsoli<\/a>.<\/p>\n<p>Viss s\u0101k\u0101s ar to, ka pirmdien (laikam, kaut gan iesp\u0113jams ar\u012b otrdien) izdom\u0101ju, ka j\u0101pieliek konsolei megaf\u012b\u010da &#8211; grafiku z\u012bm\u0113\u0161ana &#8211; dom\u0101ts dar\u012bts &#8211; samed\u012bju internetos vienu koda gabalu, kur ar <a href=\"http:\/\/experiments.mennovanslooten.nl\/2007\/plotter\/\">canvas tiek z\u012bm\u0113ti funkciju grafiki<\/a>. God\u012bgi nosp\u0113ru \u0161o kodu, piel\u0101goju to sav\u0101m vajadz\u012bb\u0101m un s\u0101ku g\u016bglet\u00f5lk\u0101 z\u012bm\u0113ties.<\/p>\n<p>A tur man pret\u012b &#8211; a tu, b\u013ce scuko, helpu uztaisi &#8211; a to fig var saprast, ko visp\u0101r iek\u0161 t\u0101s tavas konsoles var un ko nevar. Es, protams, k\u0101 jau parasti norm\u0101li koderi atbild uz j\u016bzeru rekvestiem &#8211; \u0161\u0101vu pret\u012b &#8211; da nah &#8211; un visp\u0101r visa \u0161it\u0101 fig\u0146a ir t\u012bri man\u0101m vajadz\u012bb\u0101m un es tjipa atceros visu, ko var un ko nevar.<\/p>\n<p>Bet, tom\u0113r sav\u0101 b\u016bt\u012bb\u0101 jusdamies koderis sajutu sev\u012b \u010dallend\u017eu &#8211; a mo\u0161 tom\u0113r kaut k\u0101du code assist r\u012bku var uzmeistarot, nu tur tjipa no s\u0113rijas funkcij\u0101m autocomplete. Un tad atcer\u0113jos par vienu lielisku JS \u012bpa\u0161\u012bbu &#8211; for property in object ciklus &#8211; tak\u0161 var uztais\u012bt, ka atpaz\u012bstam kaut k\u0101du sarakst\u012bto teksta gabali\u0146u un tad no\u010dekojam vai rakst\u012btais teksts ir kaut k\u0101da propertija s\u0101kums. Dom\u0101ts dar\u012bts.<\/p>\n<p>Eku interesantais kods:<\/p>\n<p><code><br \/>\n\/\/tekst\u0101rejai ar idu #js_execute, pieliekam eventu pie pogu nospie\u0161anas<br \/>\n\/\/saprotams, ka izmantojam jQuery<br \/>\n$('#js_execute').keydown(function(e){<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if ( e.shiftKey && e.keyCode == 32) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.getJsExecSelection(this.selectionStart);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n});<\/p>\n<p>window.getJsExecSelection = function(ro){<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var el =$('#js_execute')[0];<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var text = $('#js_execute').val().substr(0,ro);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var GlobalObjs = ['Math','window','document','navigator','isFinite',<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;'isNaN','Number','parseFloat','parseInt','Infinity','NaN','undefined'];<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;function getSuggestion(objs,i,parentObj) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( objs.length - 1 == i ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/suggestion here<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( i == 0 ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var k = 0; k&lt;GlobalObjs.length; k++ ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( GlobalObjs[k].match('^'+objs[i]) ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var htext = GlobalObjs[k].substr(objs[i].length);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#js_execute').val(text+htext+textAfter);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionStart = ro;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionEnd = ro+htext.length;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var item in parentObj ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( item.match('^'+objs[i]) ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var htext = item.substr(objs[i].length);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#js_execute').val(text+htext+textAfter);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionStart = ro;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionEnd = ro+htext.length;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( i == 1 && parentObj == Math ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var MathProps = ['E','LN2','LN10','LOG2E','LOG10E','PI','SQRT1_2','SQRT2',<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'abs','acos','asin','atan','atan2','ceil','cos','exp','floor',<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'log','max','min','pow','random','round','sin','sqrt','tan'];<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var k = 0; k&lt; MathProps.length; k++ ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( MathProps[k].match('^'+objs[i]) ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var htext = MathProps[k].substr(objs[i].length);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#js_execute').val(text+htext+textAfter);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionStart = ro;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.selectionEnd = ro+htext.length;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/get the  current obj<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( i == 0 ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var k = 0; k&lt;GlobalObjs.length; k++ ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( objs[i] == GlobalObjs[k] ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return getSuggestion(objs,i+1,eval(GlobalObjs[k]));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var k in parentObj ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( k == objs[i] ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return getSuggestion(objs,i+1,parentObj[k]);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var textAfter = $('#js_execute').val().substr(ro);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var lastToken = text.match(\/[a-zA-Z][a-zA-Z0-9\\.]*$\/);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if ( lastToken != null ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var objs = lastToken.toString().split('.');<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getSuggestion(objs,0,null);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Da\u017eas piez\u012bmes \u0161\u012b te koda sakar\u0101:<\/p>\n<ul>\n<li>K\u0101 redzams, tad autocomplete tiek izsaukts nospie\u017eot Shift + space (pirmaj\u0101 variant\u0101 bija, ka tas notiek autom\u0101tiski ar taimer\u012bti, bet praks\u0113 lietojot \u0161\u0101du variantu n\u0101kas saskarties ar da\u017e\u0101d\u0101m probl\u0113m\u0101m.)<\/li>\n<li>\u0160is kods, ne s\u016bda nestr\u0101d\u0101s uz IE (kas gan ir kinda pohuj &#8211; kanvasi ar\u012b nestr\u0101d\u0101, turkl\u0101t visp\u0101r ir tak\u0161 ar\u012b norm\u0101li p\u0101rl\u016bki m\u016bsdien\u0101s atrodami)<\/li>\n<li>Nav nek\u0101das iesp\u0113jas norm\u0101li tikt kl\u0101t pie glob\u0101lajiem objektiem\/funkcij\u0101m, l\u012bdz ar to tie ir j\u0101defin\u0113, k\u0101 ar\u012b j\u0101apstr\u0101d\u0101 atsevi\u0161\u0137i.<\/li>\n<li>T\u0101pat, k\u0101 izr\u0101d\u0101s, tad ori\u0123in\u0101l\u0101s metodes\/propertijus nevar dab\u016bt ar\u012b valodas objektiem &#8211; (a\u013ca tur Math\/Array\/String, etc.) l\u012bdz ar to, ja t\u0101dus grib\u0101s &#8211; tad tie ar\u012b ir j\u0101defin\u0113 atsevi\u0161\u0137i. Savuk\u0101rt DOM objektu propertijus \u0161is autocomplete m\u0101k atrast pavisam lieliski.<\/li>\n<li>V\u0113l, kas ir kruta &#8211; ja tiek piedefin\u0113ts jauns propertijs, k\u0101dam no eso\u0161ajiem objektiem, nu tur teiksim window objektam uztaisam propertiju blahblahblah (window.blahblahblah = 5), tad ar\u012b \u0161o propertiju var\u0113s dab\u016bt iek\u0161 autocomplete.<\/li>\n<li>Protams, ir vis\u0101das, lietas, k\u0101 \u0161o pas\u0101kumu var\u0113tu sare\u017e\u0123\u012bt un uztais\u012bt v\u0113l lietojam\u0101ku &#8211; nu tur par\u0101d\u0101s kautk\u0101ds popups ar visiem objekta propertijiem, kuri atbilst dot\u0101 stringa s\u0101kumam, kurus tad attiec\u012bgi var izv\u0113l\u0113ties &#8216;n shit.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Grib\u0113ju tev manu d\u0101rgo las\u012bt\u0101j izst\u0101st\u012bt par savu \u0161\u012bsned\u0113\u013cas naktsprojektu. N\u0113, n\u0113, nejau to, kur l\u012bdz turpat trijiem nakt\u012b tiek nost\u0101v\u0113ts \u013be\u0146ingrad\u0101, jo sarunas ar Uldi, Andri un Aneti ir for\u0161as &#8211; par to lai Andris uzraksta Luck\u0101nism\u0101. Es te par citu savu izklaidi &#8211; Math.js un t\u0101 test\u0113\u0161anas un izmanto\u0161anas\u00a0konsoli. Viss s\u0101k\u0101s ar to, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/posts\/44"}],"collection":[{"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/comments?post=44"}],"version-history":[{"count":6,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"predecessor-version":[{"id":677,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions\/677"}],"wp:attachment":[{"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ramuuns.com\/blog\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}