module-barejs.decl.html 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>JSDoc: Class: decl</title>
  6. <script src="scripts/prettify/prettify.js"> </script>
  7. <script src="scripts/prettify/lang-css.js"> </script>
  8. <!--[if lt IE 9]>
  9. <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  10. <![endif]-->
  11. <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
  12. <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
  13. </head>
  14. <body>
  15. <div id="main">
  16. <h1 class="page-title">Class: decl</h1>
  17. <section>
  18. <header>
  19. <h2><span class="attribs"><span class="type-signature">(abstract) </span></span>
  20. <span class="ancestors"><a href="module-barejs.html">barejs</a>.</span>decl<span class="signature">()</span><span class="type-signature"></span></h2>
  21. <div class="class-description"><p>Module for declaring classes, interfaces, enums, and checking implementations.
  22. decl uses the inheritance natively supported by JavaScript, instead of trying to emulate
  23. multiple inheritance or providing &quot;super&quot; or &quot;base&quot; keyword emulation. This combined with the
  24. fact that decl doesn't generate a constructor function (the defining code has to supply it)
  25. leads to classes with no run-time overhead. It also means there is no &quot;magic&quot; performed.
  26. Implementors using decl's inheritance are responsible for calling the base class
  27. constructor and methods using the standard JavaScript call mechanism:</p>
  28. <pre class="prettyprint source"><code> function A( _name )
  29. {
  30. this.name = _name;
  31. }
  32. decl.declareClass( A,
  33. {
  34. toString: function()
  35. {
  36. return this.name;
  37. }
  38. }
  39. function B( _name, _age )
  40. {
  41. // Invoke base class constructor on this object
  42. A.call( this, _name );
  43. this.age = _age;
  44. }
  45. decl.declareClass( B, A,
  46. {
  47. toString: function()
  48. {
  49. // Invoke A::toString() and append our age to it.
  50. return A.prototype.toString.call( this ) + &quot;; age &quot; + this.age;
  51. }
  52. } );</code></pre><p>In the debug version of barejs, decl adds a lot of metadata to provide a great debugging experience.
  53. When defined with named constructors, objects created with decl will be highly discoverable and debuggable in browsers like Chrome.</p></div>
  54. </header>
  55. <article>
  56. <div class="container-overview">
  57. <h2>Constructor</h2>
  58. <h4 class="name" id="decl"><span class="type-signature">(abstract) </span>new decl<span class="signature">()</span><span class="type-signature"></span></h4>
  59. <div class="description">
  60. <p>Note: decl is not a constructor; call its static members.</p>
  61. </div>
  62. <dl class="details">
  63. <dt class="tag-source">Source:</dt>
  64. <dd class="tag-source"><ul class="dummy"><li>
  65. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line28">line 28</a>
  66. </li></ul></dd>
  67. </dl>
  68. </div>
  69. <h3 class="subsection-title">Classes</h3>
  70. <dl>
  71. <dt><a href="module-barejs.decl-Enum.html">Enum</a></dt>
  72. <dd></dd>
  73. <dt><a href="module-barejs.decl-Interface.html">Interface</a></dt>
  74. <dd></dd>
  75. <dt><a href="module-barejs.decl-SpecialType.html">SpecialType</a></dt>
  76. <dd></dd>
  77. </dl>
  78. <h3 class="subsection-title">Members</h3>
  79. <h4 class="name" id=".hasPropertySupport"><span class="type-signature">(static) </span>hasPropertySupport<span class="type-signature"> :boolean</span></h4>
  80. <div class="description">
  81. <p>This convenience property is true if the environment supports property getters and setters.</p>
  82. </div>
  83. <h5>Type:</h5>
  84. <ul>
  85. <li>
  86. <span class="param-type">boolean</span>
  87. </li>
  88. </ul>
  89. <dl class="details">
  90. <dt class="tag-source">Source:</dt>
  91. <dd class="tag-source"><ul class="dummy"><li>
  92. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2135">line 2135</a>
  93. </li></ul></dd>
  94. </dl>
  95. <h4 class="name" id=".readOnlyProperty"><span class="type-signature">(static, readonly) </span>readOnlyProperty<span class="type-signature"> :object</span></h4>
  96. <div class="description">
  97. <p>Convenience property to ease defining a read only property on an Interface.
  98. It as simply a shortcut for '{ allowGet: true, allowSet: false }':</p>
  99. <pre class="prettyprint source"><code> decl.declareInterface( function MyInterface() {},
  100. {
  101. // The following two definitions have exactly the same effect:
  102. myProperty: decl.readOnlyProperty,
  103. myProperty: { allowGet: true, allowSet: false }
  104. } );</code></pre>
  105. </div>
  106. <h5>Type:</h5>
  107. <ul>
  108. <li>
  109. <span class="param-type">object</span>
  110. </li>
  111. </ul>
  112. <dl class="details">
  113. <dt class="tag-source">Source:</dt>
  114. <dd class="tag-source"><ul class="dummy"><li>
  115. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line107">line 107</a>
  116. </li></ul></dd>
  117. </dl>
  118. <h4 class="name" id=".readWriteProperty"><span class="type-signature">(static, readonly) </span>readWriteProperty<span class="type-signature"> :object</span></h4>
  119. <div class="description">
  120. <p>Convenience property to ease defining a read/write property on an Interface.
  121. It as simply a shortcut for '{ allowGet: true, allowSet: true }':</p>
  122. <pre class="prettyprint source"><code> decl.declareInterface( function MyInterface() {},
  123. {
  124. // The following two definitions have exactly the same effect:
  125. myProperty: decl.readWriteProperty,
  126. myProperty: { allowGet: true, allowSet: true }
  127. } );</code></pre>
  128. </div>
  129. <h5>Type:</h5>
  130. <ul>
  131. <li>
  132. <span class="param-type">object</span>
  133. </li>
  134. </ul>
  135. <dl class="details">
  136. <dt class="tag-source">Source:</dt>
  137. <dd class="tag-source"><ul class="dummy"><li>
  138. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line159">line 159</a>
  139. </li></ul></dd>
  140. </dl>
  141. <h3 class="subsection-title">Methods</h3>
  142. <h4 class="name" id=".abstractClass"><span class="type-signature">(static) </span>abstractClass<span class="signature">(_class, _base<span class="signature-attributes">opt</span>, &hellip;_interface<span class="signature-attributes">opt</span>, _static<span class="signature-attributes">opt</span>, _prototype<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {function}</span></h4>
  143. <div class="description">
  144. <p>Declare a constructor function to be an abstract class. Allows specifying an optional base class and interfaces implemented.
  145. When reading or writing decl.abstractClass statements, it might help to know it was designed to mimic popular languages
  146. in its format. Here's an example:</p>
  147. <pre class="prettyprint source"><code> // With common languages
  148. abstract class ClassName : BaseClass, Interface1, Interface2 // C#
  149. abstract class ClassName extends BaseClass implements Interface1, Interface2 // Java
  150. {
  151. private String _name;
  152. public ClassName( _name )
  153. {
  154. super( 42 );
  155. this._name = _name;
  156. }
  157. public String toString()
  158. {
  159. return this._name;
  160. }
  161. }
  162. // With barejs.decl:
  163. function ClassName( _name )
  164. {
  165. BaseClass.call( this, 42 );
  166. this._name = _name;
  167. }
  168. decl.abstractClass( ClassName, BaseClass, Interface1, Interface2,
  169. {
  170. // This puts the _name property as null on the prototype,
  171. // which is purely for clarity (e.g. stating it exists).
  172. _name: null,
  173. toString: function()
  174. {
  175. return this._name;
  176. }
  177. }</code></pre><ul>
  178. <li>If a base class is provided, decl will ensure _class.prototype is instanceof _base.prototype.</li>
  179. <li>For abstract classes, decl will not validate if interface methods are implemented.</li>
  180. <li>If a _static argument is specified, it will be applied to the constructor function using <a href="module-barejs.decl.html#.defineObject">defineObject</a>.</li>
  181. <li>If a _prototype argument is specified, it will be applied to the prototype using <a href="module-barejs.decl.html#.defineObject">defineObject</a>.</li>
  182. <li>If only 1 object is supplied, it is always interpreted as prototype definition, never as static.
  183. You must specify null for the prototype object if you only want to specify static members.</li>
  184. </ul>
  185. <p>By default, any static members (except <code>name</code>, <code>prototype</code>, <code>constructor</code>, <code>superclass</code> and other metadata) will inherit.
  186. A class can make static functions &quot;private&quot; by defining a static <code>$private</code> function, accepting a String/Symbol as key.
  187. This function should return <code>true</code> for any keys that should <em>not</em> inherit. The <code>$private</code> function itself will never inherit.</p>
  188. </div>
  189. <h5>Parameters:</h5>
  190. <table class="params">
  191. <thead>
  192. <tr>
  193. <th>Name</th>
  194. <th>Type</th>
  195. <th>Attributes</th>
  196. <th class="last">Description</th>
  197. </tr>
  198. </thead>
  199. <tbody>
  200. <tr>
  201. <td class="name"><code>_class</code></td>
  202. <td class="type">
  203. <span class="param-type">function</span>
  204. </td>
  205. <td class="attributes">
  206. </td>
  207. <td class="description last"><p>The constructor function of the class</p></td>
  208. </tr>
  209. <tr>
  210. <td class="name"><code>_base</code></td>
  211. <td class="type">
  212. <span class="param-type">function</span>
  213. </td>
  214. <td class="attributes">
  215. &lt;optional><br>
  216. </td>
  217. <td class="description last"><p>Optional: Extended base class</p></td>
  218. </tr>
  219. <tr>
  220. <td class="name"><code>_interface</code></td>
  221. <td class="type">
  222. <span class="param-type">function</span>
  223. </td>
  224. <td class="attributes">
  225. &lt;optional><br>
  226. &lt;repeatable><br>
  227. </td>
  228. <td class="description last"><p>Optional: Any number of implemented interfaces</p></td>
  229. </tr>
  230. <tr>
  231. <td class="name"><code>_static</code></td>
  232. <td class="type">
  233. <span class="param-type">object</span>
  234. </td>
  235. <td class="attributes">
  236. &lt;optional><br>
  237. </td>
  238. <td class="description last"><p>Optional: static definition; properties that will be added to the constructor function.</p></td>
  239. </tr>
  240. <tr>
  241. <td class="name"><code>_prototype</code></td>
  242. <td class="type">
  243. <span class="param-type">object</span>
  244. </td>
  245. <td class="attributes">
  246. &lt;optional><br>
  247. </td>
  248. <td class="description last"><p>Optional: prototype definition: properties that will be added to the prototype</p></td>
  249. </tr>
  250. </tbody>
  251. </table>
  252. <dl class="details">
  253. <dt class="tag-source">Source:</dt>
  254. <dd class="tag-source"><ul class="dummy"><li>
  255. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1826">line 1826</a>
  256. </li></ul></dd>
  257. </dl>
  258. <h5>Returns:</h5>
  259. <div class="param-desc">
  260. <p>The constructor function (<strong>_class</strong>), so it can immediately be returned</p>
  261. </div>
  262. <dl>
  263. <dt>
  264. Type
  265. </dt>
  266. <dd>
  267. <span class="param-type">function</span>
  268. </dd>
  269. </dl>
  270. <h4 class="name" id=".asFunctional"><span class="type-signature">(static) </span>asFunctional<span class="signature">(_target, _functionalInterface, _strict<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
  271. <div class="description">
  272. <p>Interpret <code>_target</code> as implementing a Java Functional Interface. A functional interface is an Interface with exactly
  273. 1 function defined. Java allows lambda expressions to be generated for arguments of this type of interface.
  274. This method allows normalizing a function or object to a &quot;Functional Interface Object&quot;, so Java behavior can be
  275. emulated.
  276. This function will accept:</p>
  277. <ul>
  278. <li><code>null</code>/<code>undefined</code> (then <code>null</code> is returned)</li>
  279. <li>A function (an 'instance' of _functionalInterface is returned, with this function in place).</li>
  280. <li>An object complying with _functionalInterface</li>
  281. </ul>
  282. <p>Any other argument will throw a TypeError.</p>
  283. </div>
  284. <h5>Parameters:</h5>
  285. <table class="params">
  286. <thead>
  287. <tr>
  288. <th>Name</th>
  289. <th>Type</th>
  290. <th>Attributes</th>
  291. <th>Default</th>
  292. <th class="last">Description</th>
  293. </tr>
  294. </thead>
  295. <tbody>
  296. <tr>
  297. <td class="name"><code>_target</code></td>
  298. <td class="type">
  299. <span class="param-type">object</span>
  300. |
  301. <span class="param-type">function</span>
  302. </td>
  303. <td class="attributes">
  304. </td>
  305. <td class="default">
  306. </td>
  307. <td class="description last"><p>The target object or function.</p></td>
  308. </tr>
  309. <tr>
  310. <td class="name"><code>_functionalInterface</code></td>
  311. <td class="type">
  312. <span class="param-type">function</span>
  313. </td>
  314. <td class="attributes">
  315. </td>
  316. <td class="default">
  317. </td>
  318. <td class="description last"><p>The interface to use as functional interface. May only have a single method defined.</p></td>
  319. </tr>
  320. <tr>
  321. <td class="name"><code>_strict</code></td>
  322. <td class="type">
  323. <span class="param-type">boolean</span>
  324. </td>
  325. <td class="attributes">
  326. &lt;optional><br>
  327. </td>
  328. <td class="default">
  329. false
  330. </td>
  331. <td class="description last"><p>Optional: set to true to avoid a duck-type check, and only check <code>decl</code>
  332. metadata for interfaces implemented.</p></td>
  333. </tr>
  334. </tbody>
  335. </table>
  336. <dl class="details">
  337. <dt class="tag-source">Source:</dt>
  338. <dd class="tag-source"><ul class="dummy"><li>
  339. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2078">line 2078</a>
  340. </li></ul></dd>
  341. </dl>
  342. <h5>Throws:</h5>
  343. <dl>
  344. <dt>
  345. <div class="param-desc">
  346. <p>A TypeError may occur if <code>_functionalInterface</code> is not a valid functional interface,
  347. or if _target does not comply with the interface.</p>
  348. </div>
  349. </dt>
  350. <dd></dd>
  351. <dt>
  352. <dl>
  353. <dt>
  354. Type
  355. </dt>
  356. <dd>
  357. <span class="param-type">TypeError</span>
  358. </dd>
  359. </dl>
  360. </dt>
  361. <dd></dd>
  362. </dl>
  363. <h5>Returns:</h5>
  364. <div class="param-desc">
  365. <p>Either an object compliant with <code>_functionalInterface</code>, or <code>null</code>.</p>
  366. </div>
  367. <h4 class="name" id=".declareClass"><span class="type-signature">(static) </span>declareClass<span class="signature">(_class, _base<span class="signature-attributes">opt</span>, &hellip;_interface<span class="signature-attributes">opt</span>, _static<span class="signature-attributes">opt</span>, _prototype<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {function}</span></h4>
  368. <div class="description">
  369. <p>Declare a constructor function to be a class. Allows specifying an optional base class and interfaces implemented.
  370. When reading or writing decl.declareClass statements, it might help to know it was designed to mimic popular languages
  371. in its format. Here's an example:</p>
  372. <pre class="prettyprint source"><code> // With common languages
  373. class ClassName : BaseClass, Interface1, Interface2 // C#
  374. class ClassName extends BaseClass implements Interface1, Interface2 // Java
  375. {
  376. private String _name;
  377. public ClassName( _name )
  378. {
  379. super( 42 );
  380. this._name = _name;
  381. }
  382. public String toString()
  383. {
  384. return this._name;
  385. }
  386. }
  387. // With barejs.decl:
  388. function ClassName( _name )
  389. {
  390. BaseClass.call( this, 42 );
  391. this._name = _name;
  392. }
  393. decl.declareClass( ClassName, BaseClass, Interface1, Interface2,
  394. {
  395. // This puts the _name property as null on the prototype,
  396. // which is purely for clarity (e.g. stating it exists).
  397. _name: null,
  398. toString: function()
  399. {
  400. return this._name;
  401. }
  402. }</code></pre><ul>
  403. <li>If a base class is provided, decl will ensure _class.prototype is instanceof _base.prototype.</li>
  404. <li>If interfaces are declared, decl will validate methods are implemented.</li>
  405. <li>If a _static argument is specified, it will be applied to the constructor function using <a href="module-barejs.decl.html#.defineObject">defineObject</a>.</li>
  406. <li>If a _prototype argument is specified, it will be applied to the prototype using <a href="module-barejs.decl.html#.defineObject">defineObject</a>.</li>
  407. <li>If only 1 object is supplied, it is always interpreted as prototype definition, never as static.
  408. You must specify null for the prototype object if you only want to specify static members.</li>
  409. </ul>
  410. <p>By default, any static members (except <code>name</code>, <code>prototype</code>, <code>constructor</code>, <code>superclass</code> and other metadata) will inherit.
  411. A class can make static functions &quot;private&quot; by defining a static <code>$private</code> function, accepting a String/Symbol as key.
  412. This function should return <code>true</code> for any keys that should <em>not</em> inherit. The <code>$private</code> function itself will never inherit.</p>
  413. </div>
  414. <h5>Parameters:</h5>
  415. <table class="params">
  416. <thead>
  417. <tr>
  418. <th>Name</th>
  419. <th>Type</th>
  420. <th>Attributes</th>
  421. <th class="last">Description</th>
  422. </tr>
  423. </thead>
  424. <tbody>
  425. <tr>
  426. <td class="name"><code>_class</code></td>
  427. <td class="type">
  428. <span class="param-type">function</span>
  429. </td>
  430. <td class="attributes">
  431. </td>
  432. <td class="description last"><p>The constructor function of the class</p></td>
  433. </tr>
  434. <tr>
  435. <td class="name"><code>_base</code></td>
  436. <td class="type">
  437. <span class="param-type">function</span>
  438. </td>
  439. <td class="attributes">
  440. &lt;optional><br>
  441. </td>
  442. <td class="description last"><p>Optional: Extended base class</p></td>
  443. </tr>
  444. <tr>
  445. <td class="name"><code>_interface</code></td>
  446. <td class="type">
  447. <span class="param-type">function</span>
  448. </td>
  449. <td class="attributes">
  450. &lt;optional><br>
  451. &lt;repeatable><br>
  452. </td>
  453. <td class="description last"><p>Optional: Any number of implemented interfaces</p></td>
  454. </tr>
  455. <tr>
  456. <td class="name"><code>_static</code></td>
  457. <td class="type">
  458. <span class="param-type">object</span>
  459. </td>
  460. <td class="attributes">
  461. &lt;optional><br>
  462. </td>
  463. <td class="description last"><p>Optional: static definition; properties that will be added to the constructor function.</p></td>
  464. </tr>
  465. <tr>
  466. <td class="name"><code>_prototype</code></td>
  467. <td class="type">
  468. <span class="param-type">object</span>
  469. </td>
  470. <td class="attributes">
  471. &lt;optional><br>
  472. </td>
  473. <td class="description last"><p>Optional: prototype definition: properties that will be added to the prototype</p></td>
  474. </tr>
  475. </tbody>
  476. </table>
  477. <dl class="details">
  478. <dt class="tag-source">Source:</dt>
  479. <dd class="tag-source"><ul class="dummy"><li>
  480. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1893">line 1893</a>
  481. </li></ul></dd>
  482. </dl>
  483. <h5>Returns:</h5>
  484. <div class="param-desc">
  485. <p>The constructor function (<strong>_class</strong>), so it can immediately be returned</p>
  486. </div>
  487. <dl>
  488. <dt>
  489. Type
  490. </dt>
  491. <dd>
  492. <span class="param-type">function</span>
  493. </dd>
  494. </dl>
  495. <h4 class="name" id=".declareEnum"><span class="type-signature">(static) </span>declareEnum<span class="signature">(_class, _prototype<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {object}</span></h4>
  496. <div class="description">
  497. <p>Declare an enum. decl will make _class derive from the special internal <a href="module-barejs.decl-Enum.html">Enum</a> type,
  498. and return a new instance of it. Enum values should be set on 'this' in the constructor, utility methods should be
  499. added to the prototype.</p>
  500. <pre class="prettyprint source"><code> var SampleEnum = decl.declareEnum( function SampleEnum()
  501. {
  502. this.Bit1 = 1;
  503. this.Bit2 = 2;
  504. this.Bit3 = 4;
  505. this.Bit4 = 8;
  506. },
  507. // End of constructor, what follows is the prototype definition:
  508. {
  509. hasBit: function( _bit, _value )
  510. {
  511. // hasValue is provided by the Enum base class
  512. if ( !this.hasValue( _bit ) )
  513. throw new TypeError( &quot;Unknown SampleEnum value: &quot; + _bit );
  514. return _value & _bit === _bit
  515. }
  516. } );
  517. // SampleEnum is now instanceof the SampleEnum function passed to decl.
  518. SampleEnum.hasBit( SampleEnum.Bit2, 3 ); // true
  519. // And it inherited decl's Enum type members
  520. SampleEnum.names(); // [&quot;Bit1&quot;, &quot;Bit2&quot;, &quot;Bit3&quot;, &quot;Bit4&quot;]
  521. SampleEnum instanceof Object; // false</code></pre><p>Note that the prototype property, if specified, is applied using <a href="module-barejs.decl.html#.defineObject">defineObject</a>.</p>
  522. </div>
  523. <h5>Parameters:</h5>
  524. <table class="params">
  525. <thead>
  526. <tr>
  527. <th>Name</th>
  528. <th>Type</th>
  529. <th>Attributes</th>
  530. <th class="last">Description</th>
  531. </tr>
  532. </thead>
  533. <tbody>
  534. <tr>
  535. <td class="name"><code>_class</code></td>
  536. <td class="type">
  537. <span class="param-type">function</span>
  538. </td>
  539. <td class="attributes">
  540. </td>
  541. <td class="description last"><p>The &quot;constructor&quot; function to declare as an Enum.</p></td>
  542. </tr>
  543. <tr>
  544. <td class="name"><code>_prototype</code></td>
  545. <td class="type">
  546. <span class="param-type">object</span>
  547. </td>
  548. <td class="attributes">
  549. &lt;optional><br>
  550. </td>
  551. <td class="description last"><p>Optional: things to add to the enum prototype.</p></td>
  552. </tr>
  553. </tbody>
  554. </table>
  555. <dl class="details">
  556. <dt class="tag-source">Source:</dt>
  557. <dd class="tag-source"><ul class="dummy"><li>
  558. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1998">line 1998</a>
  559. </li></ul></dd>
  560. </dl>
  561. <h5>Returns:</h5>
  562. <div class="param-desc">
  563. <p>The enum instance (instanceof _class).</p>
  564. </div>
  565. <dl>
  566. <dt>
  567. Type
  568. </dt>
  569. <dd>
  570. <span class="param-type">object</span>
  571. </dd>
  572. </dl>
  573. <h4 class="name" id=".declareInterface"><span class="type-signature">(static) </span>declareInterface<span class="signature">(_class, &hellip;_interface<span class="signature-attributes">opt</span>, _static<span class="signature-attributes">opt</span>, _prototype<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {function}</span></h4>
  574. <div class="description">
  575. <p>Declare an interface. An interface can extend multiple interfaces by passing them as additional parameters.
  576. The constructor function _class will be made to derive from the special internal <a href="module-barejs.decl-Interface.html">Interface</a> type.
  577. It is not meant to be instantiated, and decl will never call the interface's constructor.</p>
  578. </div>
  579. <h5>Parameters:</h5>
  580. <table class="params">
  581. <thead>
  582. <tr>
  583. <th>Name</th>
  584. <th>Type</th>
  585. <th>Attributes</th>
  586. <th class="last">Description</th>
  587. </tr>
  588. </thead>
  589. <tbody>
  590. <tr>
  591. <td class="name"><code>_class</code></td>
  592. <td class="type">
  593. <span class="param-type">function</span>
  594. </td>
  595. <td class="attributes">
  596. </td>
  597. <td class="description last"><p>The &quot;constructor&quot; function to declare as an interface.</p></td>
  598. </tr>
  599. <tr>
  600. <td class="name"><code>_interface</code></td>
  601. <td class="type">
  602. <span class="param-type">function</span>
  603. </td>
  604. <td class="attributes">
  605. &lt;optional><br>
  606. &lt;repeatable><br>
  607. </td>
  608. <td class="description last"><p>Any number of interfaces to extend.</p></td>
  609. </tr>
  610. <tr>
  611. <td class="name"><code>_static</code></td>
  612. <td class="type">
  613. <span class="param-type">object</span>
  614. </td>
  615. <td class="attributes">
  616. &lt;optional><br>
  617. </td>
  618. <td class="description last"><p>Optional: static definition; properties that will be added to the constructor function.</p></td>
  619. </tr>
  620. <tr>
  621. <td class="name"><code>_prototype</code></td>
  622. <td class="type">
  623. <span class="param-type">object</span>
  624. </td>
  625. <td class="attributes">
  626. &lt;optional><br>
  627. </td>
  628. <td class="description last"><p>Optional: prototype to apply</p></td>
  629. </tr>
  630. </tbody>
  631. </table>
  632. <dl class="details">
  633. <dt class="tag-source">Source:</dt>
  634. <dd class="tag-source"><ul class="dummy"><li>
  635. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1909">line 1909</a>
  636. </li></ul></dd>
  637. </dl>
  638. <h5>Returns:</h5>
  639. <div class="param-desc">
  640. <p>The interface definition (_class).</p>
  641. </div>
  642. <dl>
  643. <dt>
  644. Type
  645. </dt>
  646. <dd>
  647. <span class="param-type">function</span>
  648. </dd>
  649. </dl>
  650. <h4 class="name" id=".defineObject"><span class="type-signature">(static) </span>defineObject<span class="signature">(_target, _definition, _objectName<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
  651. <div class="description">
  652. <p>defineObject is similar to <a href="module-barejs.decl.html#.defineProperties">decl.defineProperties</a>, but it expands the _definition's properties if needed.
  653. It will update values of properties that are not property assigment definitions to be proper property definitions, defaulting to:</p>
  654. <pre class="prettyprint source"><code> { configurable: false, writable: true, enumerable: true, value: &lt;value&gt; }</code></pre><p>(Note: enumerable will be <code>false</code> if the name starts with _ or is a Symbol).
  655. defineObject will iterate the _definition object and expand properties on it. Please be aware of the following:</p>
  656. <ol>
  657. <li><strong>_destination</strong> will be modified. If that's a problem, use <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign">Object.assign</a> to create a copy first.</li>
  658. <li><p>Existing properties are scanned for presence of a <strong>value</strong>, <strong>get</strong> or <strong>set</strong> property. If these are present on a value, you <strong>must</strong> use the full property syntax:</p>
  659. <pre class="prettyprint source"><code>decl.defineObject( MyClass,
  660. {
  661. // Since the object we want to assign to the MyClass constructor function has properties that make it look like
  662. // a property definition, we have to wrap it in a property definition as required by Object.defineProperties.
  663. staticFlags: { enumerable: true, value: { get: true, set: false } }
  664. } );</code></pre></li>
  665. <li><p>defineObject will silently ignore getter/setter properties in environments that don't support them, unlike <a href="module-barejs.decl.html#.defineProperties">module:barejs.decl.defineProperties</a>.</p>
  666. </li>
  667. <li><p>You can reference a getter or setter by name, provided it is also on the definition object:</p>
  668. <pre class="prettyprint source"><code>decl.defineObject( {},
  669. {
  670. // underlying data Array, not enumerable, configurable or writable
  671. _values: { value: [] },
  672. // getSize function that returns the length of the _values
  673. getSize: function() { return this._values.length; },
  674. // Size property. Refers to the getSize function for the getter, instead of using an inline function.
  675. size: { enumerable: true, get: &quot;getSize&quot; }
  676. } );</code></pre></li>
  677. </ol>
  678. </div>
  679. <h5>Parameters:</h5>
  680. <table class="params">
  681. <thead>
  682. <tr>
  683. <th>Name</th>
  684. <th>Type</th>
  685. <th>Attributes</th>
  686. <th class="last">Description</th>
  687. </tr>
  688. </thead>
  689. <tbody>
  690. <tr>
  691. <td class="name"><code>_target</code></td>
  692. <td class="type">
  693. <span class="param-type">object</span>
  694. </td>
  695. <td class="attributes">
  696. </td>
  697. <td class="description last"><p>The target object</p></td>
  698. </tr>
  699. <tr>
  700. <td class="name"><code>_definition</code></td>
  701. <td class="type">
  702. <span class="param-type">object</span>
  703. </td>
  704. <td class="attributes">
  705. </td>
  706. <td class="description last"><p>The definitions to assign to _target. Note that _definition will be modified to contain property definitions(!).</p></td>
  707. </tr>
  708. <tr>
  709. <td class="name"><code>_objectName</code></td>
  710. <td class="type">
  711. <span class="param-type">string</span>
  712. </td>
  713. <td class="attributes">
  714. &lt;optional><br>
  715. </td>
  716. <td class="description last"><p>Optional: the name of the object. If passed, decl will generate displayName properties on methods for an enhanced debugging experience.
  717. For example: if &quot;decl&quot; is passed as name, and there's an &quot;is&quot; function on _definition, the displayName of the &quot;is&quot; function will be set to &quot;decl.is&quot;).</p></td>
  718. </tr>
  719. </tbody>
  720. </table>
  721. <dl class="details">
  722. <dt class="tag-source">Source:</dt>
  723. <dd class="tag-source"><ul class="dummy"><li>
  724. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2051">line 2051</a>
  725. </li></ul></dd>
  726. </dl>
  727. <h5>Returns:</h5>
  728. <div class="param-desc">
  729. <p>_target The target object, expanded</p>
  730. </div>
  731. <h4 class="name" id=".defineProperties"><span class="type-signature">(static) </span>defineProperties<span class="signature">(_target, _definitions)</span><span class="type-signature"> &rarr; {object}</span></h4>
  732. <div class="description">
  733. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties">Object.defineProperties</a>.</p>
  734. <p>If the native version is not available, a fall-back is used. The fallback supports the same syntax as the original, and uses the <a href="module-barejs.decl.html#.defineProperty">defineProperty</a> fallback.</p>
  735. </div>
  736. <h5>Parameters:</h5>
  737. <table class="params">
  738. <thead>
  739. <tr>
  740. <th>Name</th>
  741. <th>Type</th>
  742. <th class="last">Description</th>
  743. </tr>
  744. </thead>
  745. <tbody>
  746. <tr>
  747. <td class="name"><code>_target</code></td>
  748. <td class="type">
  749. <span class="param-type">object</span>
  750. </td>
  751. <td class="description last"><p>The object to define the property on</p></td>
  752. </tr>
  753. <tr>
  754. <td class="name"><code>_definitions</code></td>
  755. <td class="type">
  756. <span class="param-type">object</span>
  757. </td>
  758. <td class="description last"><p>Object containing properties, each of which have a value that is a definition as passed to defineProperty.</p></td>
  759. </tr>
  760. </tbody>
  761. </table>
  762. <dl class="details">
  763. <dt class="tag-source">Source:</dt>
  764. <dd class="tag-source"><ul class="dummy"><li>
  765. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2165">line 2165</a>
  766. </li></ul></dd>
  767. </dl>
  768. <h5>Returns:</h5>
  769. <div class="param-desc">
  770. <p>The object the properties where defined on (_target).</p>
  771. </div>
  772. <dl>
  773. <dt>
  774. Type
  775. </dt>
  776. <dd>
  777. <span class="param-type">object</span>
  778. </dd>
  779. </dl>
  780. <h4 class="name" id=".defineProperty"><span class="type-signature">(static) </span>defineProperty<span class="signature">(_target, _key, _definition)</span><span class="type-signature"> &rarr; {object}</span></h4>
  781. <div class="description">
  782. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a>.</p>
  783. <p>If the native version is not available, a fall-back is used. The fallback supports the same syntax as the original, but falls back to simple assignment
  784. or deprecated constructs like <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__">__defineGetter__</a>.
  785. Be aware that property getters or setters may not be supported in some environments, which is indicated by <a href="module-barejs.decl.html#.hasPropertySupport">hasPropertySupport</a> being false.</p>
  786. </div>
  787. <h5>Parameters:</h5>
  788. <table class="params">
  789. <thead>
  790. <tr>
  791. <th>Name</th>
  792. <th>Type</th>
  793. <th class="last">Description</th>
  794. </tr>
  795. </thead>
  796. <tbody>
  797. <tr>
  798. <td class="name"><code>_target</code></td>
  799. <td class="type">
  800. <span class="param-type">object</span>
  801. </td>
  802. <td class="description last"><p>The object to define the property on</p></td>
  803. </tr>
  804. <tr>
  805. <td class="name"><code>_key</code></td>
  806. <td class="type">
  807. <span class="param-type">string</span>
  808. |
  809. <span class="param-type">Symbol</span>
  810. </td>
  811. <td class="description last"><p>The name or <a href="module-barejs.html#.Symbol">Symbol</a> to set</p></td>
  812. </tr>
  813. <tr>
  814. <td class="name"><code>_definition</code></td>
  815. <td class="type">
  816. <span class="param-type">object</span>
  817. </td>
  818. <td class="description last"><p>Object containing either a <strong>value</strong> property, or a <strong>get</strong> and/or <strong>set</strong> property (function).</p>
  819. <h6>Properties</h6>
  820. <table class="params">
  821. <thead>
  822. <tr>
  823. <th>Name</th>
  824. <th>Type</th>
  825. <th>Attributes</th>
  826. <th>Default</th>
  827. <th class="last">Description</th>
  828. </tr>
  829. </thead>
  830. <tbody>
  831. <tr>
  832. <td class="name"><code>get</code></td>
  833. <td class="type">
  834. <span class="param-type">function</span>
  835. </td>
  836. <td class="attributes">
  837. &lt;optional><br>
  838. </td>
  839. <td class="default">
  840. </td>
  841. <td class="description last"><p>A getter function, taking no arguments and returning the property value.</p></td>
  842. </tr>
  843. <tr>
  844. <td class="name"><code>set</code></td>
  845. <td class="type">
  846. <span class="param-type">function</span>
  847. </td>
  848. <td class="attributes">
  849. &lt;optional><br>
  850. </td>
  851. <td class="default">
  852. </td>
  853. <td class="description last"><p>A setter function, taking a value as argument.</p></td>
  854. </tr>
  855. <tr>
  856. <td class="name"><code>value</code></td>
  857. <td class="type">
  858. <span class="param-type">*</span>
  859. </td>
  860. <td class="attributes">
  861. &lt;optional><br>
  862. </td>
  863. <td class="default">
  864. </td>
  865. <td class="description last"><p>The value to assign to the property.</p></td>
  866. </tr>
  867. <tr>
  868. <td class="name"><code>writable</code></td>
  869. <td class="type">
  870. <span class="param-type">boolean</span>
  871. </td>
  872. <td class="attributes">
  873. &lt;optional><br>
  874. </td>
  875. <td class="default">
  876. false
  877. </td>
  878. <td class="description last"><p>(Only in combination with value) Whether assigning to the property is allowed.
  879. For properties with get/set, the writable is implicit (by absence or presence of a setter function).</p></td>
  880. </tr>
  881. <tr>
  882. <td class="name"><code>configurable</code></td>
  883. <td class="type">
  884. <span class="param-type">boolean</span>
  885. </td>
  886. <td class="attributes">
  887. &lt;optional><br>
  888. </td>
  889. <td class="default">
  890. false
  891. </td>
  892. <td class="description last"><p>Whether the property may be altered via delete or a next defineProperty call.</p></td>
  893. </tr>
  894. <tr>
  895. <td class="name"><code>enumerable</code></td>
  896. <td class="type">
  897. <span class="param-type">boolean</span>
  898. </td>
  899. <td class="attributes">
  900. &lt;optional><br>
  901. </td>
  902. <td class="default">
  903. false
  904. </td>
  905. <td class="description last"><p>Whether the property shows up in object property enumerations.</p></td>
  906. </tr>
  907. </tbody>
  908. </table>
  909. </td>
  910. </tr>
  911. </tbody>
  912. </table>
  913. <dl class="details">
  914. <dt class="tag-source">Source:</dt>
  915. <dd class="tag-source"><ul class="dummy"><li>
  916. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2155">line 2155</a>
  917. </li></ul></dd>
  918. </dl>
  919. <h5>Returns:</h5>
  920. <div class="param-desc">
  921. <p>The object the properties where defined on (_target).</p>
  922. </div>
  923. <dl>
  924. <dt>
  925. Type
  926. </dt>
  927. <dd>
  928. <span class="param-type">object</span>
  929. </dd>
  930. </dl>
  931. <h4 class="name" id=".freeze"><span class="type-signature">(static) </span>freeze<span class="signature">(_target)</span><span class="type-signature"> &rarr; {object}</span></h4>
  932. <div class="description">
  933. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze">Object.freeze</a>.
  934. A frozen object may not be altered in any way. No properties may be added or removed (like seal), and all values are made read-only.</p>
  935. <p>If the native version is not available, a <strong>no-operation</strong> function is used. The object is not altered in any way and simply returned.</p>
  936. </div>
  937. <h5>Parameters:</h5>
  938. <table class="params">
  939. <thead>
  940. <tr>
  941. <th>Name</th>
  942. <th>Type</th>
  943. <th class="last">Description</th>
  944. </tr>
  945. </thead>
  946. <tbody>
  947. <tr>
  948. <td class="name"><code>_target</code></td>
  949. <td class="type">
  950. <span class="param-type">object</span>
  951. </td>
  952. <td class="description last"><p>The object to freeze.</p></td>
  953. </tr>
  954. </tbody>
  955. </table>
  956. <dl class="details">
  957. <dt class="tag-source">Source:</dt>
  958. <dd class="tag-source"><ul class="dummy"><li>
  959. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2197">line 2197</a>
  960. </li></ul></dd>
  961. </dl>
  962. <h5>Returns:</h5>
  963. <div class="param-desc">
  964. <p>The object that was passed (_target).</p>
  965. </div>
  966. <dl>
  967. <dt>
  968. Type
  969. </dt>
  970. <dd>
  971. <span class="param-type">object</span>
  972. </dd>
  973. </dl>
  974. <h4 class="name" id=".hasBase"><span class="type-signature">(static) </span>hasBase<span class="signature">(_class, _base)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  975. <div class="description">
  976. <p>Checks if _class has _base as a superclass. Also true if _class === _base.
  977. Do not use this method to check if an Object is of a specific type, use the instanceof operator
  978. for that instead.</p>
  979. </div>
  980. <h5>Parameters:</h5>
  981. <table class="params">
  982. <thead>
  983. <tr>
  984. <th>Name</th>
  985. <th>Type</th>
  986. <th class="last">Description</th>
  987. </tr>
  988. </thead>
  989. <tbody>
  990. <tr>
  991. <td class="name"><code>_class</code></td>
  992. <td class="type">
  993. <span class="param-type">function</span>
  994. </td>
  995. <td class="description last"><p>The function to check.</p></td>
  996. </tr>
  997. <tr>
  998. <td class="name"><code>_base</code></td>
  999. <td class="type">
  1000. <span class="param-type">function</span>
  1001. </td>
  1002. <td class="description last"><p>The base class to check for.</p></td>
  1003. </tr>
  1004. </tbody>
  1005. </table>
  1006. <dl class="details">
  1007. <dt class="tag-source">Source:</dt>
  1008. <dd class="tag-source"><ul class="dummy"><li>
  1009. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1454">line 1454</a>
  1010. </li></ul></dd>
  1011. </dl>
  1012. <h5>Returns:</h5>
  1013. <div class="param-desc">
  1014. <p>True if the class has the base class, false otherwise.</p>
  1015. </div>
  1016. <dl>
  1017. <dt>
  1018. Type
  1019. </dt>
  1020. <dd>
  1021. <span class="param-type">boolean</span>
  1022. </dd>
  1023. </dl>
  1024. <h4 class="name" id=".hasInterface"><span class="type-signature">(static) </span>hasInterface<span class="signature">(_target, _interface, _strict<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1025. <div class="description">
  1026. <p>Checks if _target (or a base class) implements the specified Interface.
  1027. Works on both instances and the class constructor.</p>
  1028. </div>
  1029. <h5>Parameters:</h5>
  1030. <table class="params">
  1031. <thead>
  1032. <tr>
  1033. <th>Name</th>
  1034. <th>Type</th>
  1035. <th>Attributes</th>
  1036. <th>Default</th>
  1037. <th class="last">Description</th>
  1038. </tr>
  1039. </thead>
  1040. <tbody>
  1041. <tr>
  1042. <td class="name"><code>_target</code></td>
  1043. <td class="type">
  1044. <span class="param-type">object</span>
  1045. |
  1046. <span class="param-type">function</span>
  1047. </td>
  1048. <td class="attributes">
  1049. </td>
  1050. <td class="default">
  1051. </td>
  1052. <td class="description last"><p>The object or class constructor to check.</p></td>
  1053. </tr>
  1054. <tr>
  1055. <td class="name"><code>_interface</code></td>
  1056. <td class="type">
  1057. <span class="param-type">function</span>
  1058. </td>
  1059. <td class="attributes">
  1060. </td>
  1061. <td class="default">
  1062. </td>
  1063. <td class="description last"><p>The interface to check for. If interface is not a valid interface,
  1064. this method always returns false.</p></td>
  1065. </tr>
  1066. <tr>
  1067. <td class="name"><code>_strict</code></td>
  1068. <td class="type">
  1069. <span class="param-type">boolean</span>
  1070. </td>
  1071. <td class="attributes">
  1072. &lt;optional><br>
  1073. </td>
  1074. <td class="default">
  1075. false
  1076. </td>
  1077. <td class="description last"><p>Optional: set to true to avoid a duck-type check, and only check decl
  1078. metadata for interfaces implemented.</p></td>
  1079. </tr>
  1080. </tbody>
  1081. </table>
  1082. <dl class="details">
  1083. <dt class="tag-source">Source:</dt>
  1084. <dd class="tag-source"><ul class="dummy"><li>
  1085. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1576">line 1576</a>
  1086. </li></ul></dd>
  1087. </dl>
  1088. <h5>Returns:</h5>
  1089. <div class="param-desc">
  1090. <p>True if _target (or a base class) implements the interface, false otherwise.</p>
  1091. </div>
  1092. <dl>
  1093. <dt>
  1094. Type
  1095. </dt>
  1096. <dd>
  1097. <span class="param-type">boolean</span>
  1098. </dd>
  1099. </dl>
  1100. <h4 class="name" id=".is"><span class="type-signature">(static) </span>is<span class="signature">(_a, _b)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1101. <div class="description">
  1102. <p>Wrapper for <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is">Object.is</a> that will &quot;unproxy&quot; values.</p>
  1103. <pre class="prettyprint source"><code> // This returns false, Object.is sees two different objects:
  1104. Object.is( instance, instance.as( MyInterface );
  1105. // This returns true, decl will unproxy proxies.
  1106. decl.is( instance, instance.as( MyInterface ) );</code></pre>
  1107. </div>
  1108. <h5>Parameters:</h5>
  1109. <table class="params">
  1110. <thead>
  1111. <tr>
  1112. <th>Name</th>
  1113. <th>Type</th>
  1114. <th class="last">Description</th>
  1115. </tr>
  1116. </thead>
  1117. <tbody>
  1118. <tr>
  1119. <td class="name"><code>_a</code></td>
  1120. <td class="type">
  1121. </td>
  1122. <td class="description last"><p>Any value to check for equality</p></td>
  1123. </tr>
  1124. <tr>
  1125. <td class="name"><code>_b</code></td>
  1126. <td class="type">
  1127. </td>
  1128. <td class="description last"><p>Any value to check for equality</p></td>
  1129. </tr>
  1130. </tbody>
  1131. </table>
  1132. <dl class="details">
  1133. <dt class="tag-source">Source:</dt>
  1134. <dd class="tag-source"><ul class="dummy"><li>
  1135. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1400">line 1400</a>
  1136. </li></ul></dd>
  1137. </dl>
  1138. <h5>Returns:</h5>
  1139. <div class="param-desc">
  1140. <p>True if the values are considered equal, false otherwise.</p>
  1141. </div>
  1142. <dl>
  1143. <dt>
  1144. Type
  1145. </dt>
  1146. <dd>
  1147. <span class="param-type">boolean</span>
  1148. </dd>
  1149. </dl>
  1150. <h4 class="name" id=".isEnum"><span class="type-signature">(static) </span>isEnum<span class="signature">(_target)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1151. <div class="description">
  1152. <p>Check if the _target is an enum.
  1153. Only works with instances, since enums should not expose their class constructor directly.</p>
  1154. </div>
  1155. <h5>Parameters:</h5>
  1156. <table class="params">
  1157. <thead>
  1158. <tr>
  1159. <th>Name</th>
  1160. <th>Type</th>
  1161. <th class="last">Description</th>
  1162. </tr>
  1163. </thead>
  1164. <tbody>
  1165. <tr>
  1166. <td class="name"><code>_target</code></td>
  1167. <td class="type">
  1168. <span class="param-type">object</span>
  1169. </td>
  1170. <td class="description last"><p>The instance to test if it is an enum.</p></td>
  1171. </tr>
  1172. </tbody>
  1173. </table>
  1174. <dl class="details">
  1175. <dt class="tag-source">Source:</dt>
  1176. <dd class="tag-source"><ul class="dummy"><li>
  1177. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1427">line 1427</a>
  1178. </li></ul></dd>
  1179. </dl>
  1180. <h5>Returns:</h5>
  1181. <div class="param-desc">
  1182. <p>True if _target is an enum, false otherwise.</p>
  1183. </div>
  1184. <dl>
  1185. <dt>
  1186. Type
  1187. </dt>
  1188. <dd>
  1189. <span class="param-type">boolean</span>
  1190. </dd>
  1191. </dl>
  1192. <h4 class="name" id=".isFrozen"><span class="type-signature">(static) </span>isFrozen<span class="signature">(_target)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1193. <div class="description">
  1194. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen">Object.isFrozen</a>.</p>
  1195. <p>If the native version is not available, a <strong>no-operation</strong> function is used. The object is not altered by the fallback, and it always returns false (since freezing objects is not supported).</p>
  1196. </div>
  1197. <h5>Parameters:</h5>
  1198. <table class="params">
  1199. <thead>
  1200. <tr>
  1201. <th>Name</th>
  1202. <th>Type</th>
  1203. <th class="last">Description</th>
  1204. </tr>
  1205. </thead>
  1206. <tbody>
  1207. <tr>
  1208. <td class="name"><code>_target</code></td>
  1209. <td class="type">
  1210. <span class="param-type">object</span>
  1211. </td>
  1212. <td class="description last"><p>The object to evaluate.</p></td>
  1213. </tr>
  1214. </tbody>
  1215. </table>
  1216. <dl class="details">
  1217. <dt class="tag-source">Source:</dt>
  1218. <dd class="tag-source"><ul class="dummy"><li>
  1219. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2206">line 2206</a>
  1220. </li></ul></dd>
  1221. </dl>
  1222. <h5>Returns:</h5>
  1223. <div class="param-desc">
  1224. <p>True if the object (_target) is frozen, false otherwise. The fallback always returns false.</p>
  1225. </div>
  1226. <dl>
  1227. <dt>
  1228. Type
  1229. </dt>
  1230. <dd>
  1231. <span class="param-type">boolean</span>
  1232. </dd>
  1233. </dl>
  1234. <h4 class="name" id=".isInterface"><span class="type-signature">(static) </span>isInterface<span class="signature">(_target)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1235. <div class="description">
  1236. <p>Check if the _target is an interface.
  1237. Only works with class constructors, since there should be no instance of an interface.</p>
  1238. </div>
  1239. <h5>Parameters:</h5>
  1240. <table class="params">
  1241. <thead>
  1242. <tr>
  1243. <th>Name</th>
  1244. <th>Type</th>
  1245. <th class="last">Description</th>
  1246. </tr>
  1247. </thead>
  1248. <tbody>
  1249. <tr>
  1250. <td class="name"><code>_target</code></td>
  1251. <td class="type">
  1252. <span class="param-type">function</span>
  1253. </td>
  1254. <td class="description last"><p>The class constructor to test if it is an interface.</p></td>
  1255. </tr>
  1256. </tbody>
  1257. </table>
  1258. <dl class="details">
  1259. <dt class="tag-source">Source:</dt>
  1260. <dd class="tag-source"><ul class="dummy"><li>
  1261. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1415">line 1415</a>
  1262. </li></ul></dd>
  1263. </dl>
  1264. <h5>Returns:</h5>
  1265. <div class="param-desc">
  1266. <p>True if _target is an interface, false otherwise.</p>
  1267. </div>
  1268. <dl>
  1269. <dt>
  1270. Type
  1271. </dt>
  1272. <dd>
  1273. <span class="param-type">boolean</span>
  1274. </dd>
  1275. </dl>
  1276. <h4 class="name" id=".isProxy"><span class="type-signature">(static) </span>isProxy<span class="signature">(_target)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1277. <div class="description">
  1278. <p>Check if the target is a proxy object.</p>
  1279. </div>
  1280. <h5>Parameters:</h5>
  1281. <table class="params">
  1282. <thead>
  1283. <tr>
  1284. <th>Name</th>
  1285. <th>Type</th>
  1286. <th class="last">Description</th>
  1287. </tr>
  1288. </thead>
  1289. <tbody>
  1290. <tr>
  1291. <td class="name"><code>_target</code></td>
  1292. <td class="type">
  1293. <span class="param-type">object</span>
  1294. </td>
  1295. <td class="description last"><p>The object to check.</p></td>
  1296. </tr>
  1297. </tbody>
  1298. </table>
  1299. <dl class="details">
  1300. <dt class="tag-source">Source:</dt>
  1301. <dd class="tag-source"><ul class="dummy"><li>
  1302. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1439">line 1439</a>
  1303. </li></ul></dd>
  1304. </dl>
  1305. <h5>Returns:</h5>
  1306. <div class="param-desc">
  1307. <p>True if _target is a proxy object, false otherwise.</p>
  1308. </div>
  1309. <dl>
  1310. <dt>
  1311. Type
  1312. </dt>
  1313. <dd>
  1314. <span class="param-type">boolean</span>
  1315. </dd>
  1316. </dl>
  1317. <h4 class="name" id=".isSealed"><span class="type-signature">(static) </span>isSealed<span class="signature">(_target)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
  1318. <div class="description">
  1319. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed">Object.isSealed</a>.
  1320. A sealed object may not be altered by adding or removing properties. Existing properties may be altered (provided they are writable).</p>
  1321. <p>If the native version is not available, a <strong>no-operation</strong> function is used. The object is not altered by the fallback, and it always returns false (since sealing objects is not supported).</p>
  1322. </div>
  1323. <h5>Parameters:</h5>
  1324. <table class="params">
  1325. <thead>
  1326. <tr>
  1327. <th>Name</th>
  1328. <th>Type</th>
  1329. <th class="last">Description</th>
  1330. </tr>
  1331. </thead>
  1332. <tbody>
  1333. <tr>
  1334. <td class="name"><code>_target</code></td>
  1335. <td class="type">
  1336. <span class="param-type">object</span>
  1337. </td>
  1338. <td class="description last"><p>The object to evaluate.</p></td>
  1339. </tr>
  1340. </tbody>
  1341. </table>
  1342. <dl class="details">
  1343. <dt class="tag-source">Source:</dt>
  1344. <dd class="tag-source"><ul class="dummy"><li>
  1345. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2186">line 2186</a>
  1346. </li></ul></dd>
  1347. </dl>
  1348. <h5>Returns:</h5>
  1349. <div class="param-desc">
  1350. <p>True if the object (_target) is sealed, false otherwise. The fallback always returns false.</p>
  1351. </div>
  1352. <dl>
  1353. <dt>
  1354. Type
  1355. </dt>
  1356. <dd>
  1357. <span class="param-type">boolean</span>
  1358. </dd>
  1359. </dl>
  1360. <h4 class="name" id=".preventCast"><span class="type-signature">(static) </span>preventCast<span class="signature">(_class)</span><span class="type-signature"> &rarr; {Symbol}</span></h4>
  1361. <div class="description">
  1362. <p>Tells the proxy system casting to this type is not allowed. Should only be used for very low
  1363. level classes, otherwise performance will be impacted.</p>
  1364. </div>
  1365. <h5>Parameters:</h5>
  1366. <table class="params">
  1367. <thead>
  1368. <tr>
  1369. <th>Name</th>
  1370. <th>Type</th>
  1371. <th class="last">Description</th>
  1372. </tr>
  1373. </thead>
  1374. <tbody>
  1375. <tr>
  1376. <td class="name"><code>_class</code></td>
  1377. <td class="type">
  1378. <span class="param-type">function</span>
  1379. </td>
  1380. <td class="description last"><p>The type to disallow casting to</p></td>
  1381. </tr>
  1382. </tbody>
  1383. </table>
  1384. <dl class="details">
  1385. <dt class="tag-source">Source:</dt>
  1386. <dd class="tag-source"><ul class="dummy"><li>
  1387. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line499">line 499</a>
  1388. </li></ul></dd>
  1389. </dl>
  1390. <h5>Returns:</h5>
  1391. <div class="param-desc">
  1392. <p>Key to cast to this type. NEVER export this key in any way.</p>
  1393. </div>
  1394. <dl>
  1395. <dt>
  1396. Type
  1397. </dt>
  1398. <dd>
  1399. <span class="param-type">Symbol</span>
  1400. </dd>
  1401. </dl>
  1402. <h4 class="name" id=".proxy"><span class="type-signature">(static) </span>proxy<span class="signature">(_target, _interface)</span><span class="type-signature"> &rarr; {object}</span></h4>
  1403. <div class="description">
  1404. <p>Create and return a proxy object for the target</p>
  1405. </div>
  1406. <h5>Parameters:</h5>
  1407. <table class="params">
  1408. <thead>
  1409. <tr>
  1410. <th>Name</th>
  1411. <th>Type</th>
  1412. <th class="last">Description</th>
  1413. </tr>
  1414. </thead>
  1415. <tbody>
  1416. <tr>
  1417. <td class="name"><code>_target</code></td>
  1418. <td class="type">
  1419. <span class="param-type">object</span>
  1420. </td>
  1421. <td class="description last"><p>The object to proxy</p></td>
  1422. </tr>
  1423. <tr>
  1424. <td class="name"><code>_interface</code></td>
  1425. <td class="type">
  1426. <span class="param-type">function</span>
  1427. </td>
  1428. <td class="description last"><p>The interface defining the members to proxy.</p></td>
  1429. </tr>
  1430. </tbody>
  1431. </table>
  1432. <dl class="details">
  1433. <dt class="tag-source">Source:</dt>
  1434. <dd class="tag-source"><ul class="dummy"><li>
  1435. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line1471">line 1471</a>
  1436. </li></ul></dd>
  1437. </dl>
  1438. <h5>Returns:</h5>
  1439. <div class="param-desc">
  1440. <p>The proxy object (instanceof _interface).</p>
  1441. </div>
  1442. <dl>
  1443. <dt>
  1444. Type
  1445. </dt>
  1446. <dd>
  1447. <span class="param-type">object</span>
  1448. </dd>
  1449. </dl>
  1450. <h4 class="name" id=".seal"><span class="type-signature">(static) </span>seal<span class="signature">(_target)</span><span class="type-signature"> &rarr; {object}</span></h4>
  1451. <div class="description">
  1452. <p>decl re-exports <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal">Object.seal</a>.</p>
  1453. <p>If the native version is not available, a <strong>no-operation</strong> function is used. The object is not altered in any way and simply returned.</p>
  1454. </div>
  1455. <h5>Parameters:</h5>
  1456. <table class="params">
  1457. <thead>
  1458. <tr>
  1459. <th>Name</th>
  1460. <th>Type</th>
  1461. <th class="last">Description</th>
  1462. </tr>
  1463. </thead>
  1464. <tbody>
  1465. <tr>
  1466. <td class="name"><code>_target</code></td>
  1467. <td class="type">
  1468. <span class="param-type">object</span>
  1469. </td>
  1470. <td class="description last"><p>The object to seal.</p></td>
  1471. </tr>
  1472. </tbody>
  1473. </table>
  1474. <dl class="details">
  1475. <dt class="tag-source">Source:</dt>
  1476. <dd class="tag-source"><ul class="dummy"><li>
  1477. <a href="decl.js.html">decl.js</a>, <a href="decl.js.html#line2175">line 2175</a>
  1478. </li></ul></dd>
  1479. </dl>
  1480. <h5>Returns:</h5>
  1481. <div class="param-desc">
  1482. <p>The object that was passed (_target).</p>
  1483. </div>
  1484. <dl>
  1485. <dt>
  1486. Type
  1487. </dt>
  1488. <dd>
  1489. <span class="param-type">object</span>
  1490. </dd>
  1491. </dl>
  1492. </article>
  1493. </section>
  1494. </div>
  1495. <nav>
  1496. <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-barejs.html">barejs</a></li><li><a href="module-barejs_polyfill.html">barejs/polyfill</a></li><li><a href="module-barejs_polyfill_Intl.html">barejs/polyfill/Intl</a></li></ul><h3>Classes</h3><ul><li><a href="module-barejs.decl.html">decl</a></li><li><a href="module-barejs.decl-Enum.html">Enum</a></li><li><a href="module-barejs.decl-Interface.html">Interface</a></li><li><a href="module-barejs.decl-SpecialType.html">SpecialType</a></li><li><a href="module-barejs.Destroyable.html">Destroyable</a></li><li><a href="module-barejs.EventArgs.html">EventArgs</a></li><li><a href="module-barejs.Evented.html">Evented</a></li><li><a href="module-barejs.Evented-EventedHandle.html">EventedHandle</a></li><li><a href="module-barejs.Exception.html">Exception</a></li><li><a href="module-barejs_polyfill.Array.html">Array</a></li><li><a href="module-barejs_polyfill.Date.html">Date</a></li><li><a href="module-barejs_polyfill.EntryStore.html">EntryStore</a></li><li><a href="module-barejs_polyfill.EntryStore.Iterator.html">Iterator</a></li><li><a href="module-barejs_polyfill.Function.html">Function</a></li><li><a href="module-barejs_polyfill.Map.html">Map</a></li><li><a href="module-barejs_polyfill.Map-MapIterator.html">MapIterator</a></li><li><a href="module-barejs_polyfill.Math.html">Math</a></li><li><a href="module-barejs_polyfill.Number.html">Number</a></li><li><a href="module-barejs_polyfill.Object.html">Object</a></li><li><a href="module-barejs_polyfill.Promise.html">Promise</a></li><li><a href="module-barejs_polyfill.Set.html">Set</a></li><li><a href="module-barejs_polyfill.Set-SetIterator.html">SetIterator</a></li><li><a href="module-barejs_polyfill.String.html">String</a></li><li><a href="module-barejs_polyfill.Symbol.html">Symbol</a></li><li><a href="module-barejs_polyfill.WeakMap.html">WeakMap</a></li><li><a href="module-barejs_polyfill.WeakSet.html">WeakSet</a></li><li><a href="module-barejs_polyfill_Intl.DateTimeFormat.html">DateTimeFormat</a></li><li><a href="module-barejs_polyfill_Intl.DateTimeFormat-DateTimeFormatOptions.html">DateTimeFormatOptions</a></li><li><a href="module-barejs_polyfill_Intl.NumberFormat.html">NumberFormat</a></li><li><a href="module-barejs_polyfill_Intl.NumberFormat-NumberFormatOptions.html">NumberFormatOptions</a></li><li><a href="module-barejs_polyfill_Intl-Format.html">Format</a></li></ul>
  1497. </nav>
  1498. <br class="clear">
  1499. <footer>
  1500. Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Oct 03 2018 15:59:34 GMT+0200 (W. Europe Daylight Time)
  1501. </footer>
  1502. <script> prettyPrint(); </script>
  1503. <script src="scripts/linenumber.js"> </script>
  1504. </body>
  1505. </html>