UNPKG

can

Version:

MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.

764 lines (469 loc) 19.3 kB
<!DOCTYPE html> <!--#################################################################### THIS IS A GENERATED FILE -- ANY CHANGES MADE WILL BE OVERWRITTEN INSTEAD CHANGE: source: [object Object] @function can-define.types.value ######################################################################## --> <html lang="en"> <head> <meta charset="utf-8"> <title>CanJS - value</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" type="text/css" href="./static/bundles/bit-docs-site/static.css"> <link rel="shortcut icon" sizes="16x16 24x24 32x32 48x48 64x64" href="/docs/images/canjs_favicon.ico"> <link rel="apple-touch-icon" sizes="57x57" href="../docs/images/canjs_favicon_57x57.png"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="../docs/images/canjs_favicon_57x57.png"> <link rel="apple-touch-icon" sizes="72x72" href="../docs/images/canjs_favicon_72x72.png"> <link rel="apple-touch-icon" sizes="114x114" href="../docs/images/canjs_favicon_114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="../docs/images/canjs_favicon_128x128.png"> <link rel="apple-touch-icon" sizes="144x144" href="../docs/images/canjs_favicon_144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="../docs/images/canjs_favicon_152x152.png"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta name="apple-mobile-web-app-status-bar-style" content="white-translucent"> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-2302003-11', 'auto'); ga('send', 'pageview'); </script> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger"/> <label for="nav-trigger">Menu</label> <div id="everything"> <div id="left" class="column"> <div class="top-left"> <div class="brand"> <div class="logo"> <a href="../index.html" alt="CanJS"></a> <div class="dropdown project-dropdown"> <a href="https://donejs.com/">DoneJS</a> <a href="http://stealjs.com/">StealJS</a> <a href="http://jquerypp.com/">jQuery ++</a> <a href="https://funcunit.com/">FuncUnit</a> <a href="http://documentjs.com/">DocumentJS</a> </div> </div> <div class="version"> <div class="version-number"> 3.0.0 </div> <div class="dropdown version-dropdown"> <a href="https://v2.canjs.com">2.3.27</a> </div> </div> </div> <div class="search-bar"> <p> &nbsp; </p> </div> </div> <div class="bottom-left"> <div class="social-side-container"> <ul class="social-side"> <li> <a class="header-mobile github" href="https://github.com/canjs/canjs" target="_blank"><img class="social-icon-small" src="../docs/images/github.png">Github</a> </li> <li> <a class="header-mobile twitter" href="https://twitter.com/canjs" target="_blank"><img class="social-icon-small" src="../docs/images/twitter.png">Twitter</a> </li> </ul> <ul class="social-side"> <li> <a class="header-mobile" href="https://gitter.im/canjs/canjs" target="_blank">Chat</a> </li> <li> <a class="header-mobile" href="http://forums.donejs.com/c/canjs" target="_blank">Forum</a> </li> </ul> </div> <ul> <li class=" "> <a class="page" href="guides.html" title="Welcome to CanJS! These guides are here to help you develop and improve your relationship with CanJS. After all, picking a JavaScript framework is a commitment. We want CanJS to be the framework you marry. This page helps you know how advance through the different stages of this relationship:"> Guides </a> </li> <li class=" parent expanded"> <a class="page" href="can-core.html" title="The best, most hardened and generally useful libraries in CanJS."> Core </a> <ul> <li class=" "> <a class="module" href="can-component.html" title="Create a custom element that can be used to manage widgets or application logic."> can-component </a> </li> <li class=" "> <a class="module" href="can-compute.html" title="Create an observable value."> can-compute </a> </li> <li class=" "> <a class="module" href="can-connect.html" title="can-connect provides persisted data middleware. Use it to assemble powerful model layers for any JavaScript project."> can-connect </a> </li> <li class=" parent expanded"> <a class="module" href="can-define.html" title="Exports the define method that defines observable properties and their behavior on a prototype object."> can-define </a> <ul> <li> <span>static</span> <ul> <li class=" "> <a class="property" href="can-define.types.html" title="Defines the type, initial value, and get, set, and serialize behavior for an observable property. All type converters leave null and undefined as is except for the &quot;htmlbool&quot; type converter."> types </a> </li> </ul> </li> <li> <span>types</span> <ul> <li class=" "> <a class="typedef" href="can-define.types.propDefinition.html" title="Defines the type, initial value, and get, set, and serialize behavior for an observable property. These behaviors can be specified with as an Object, String, Constructor function, Array, a getter expression, or setter expression."> PropDefinition </a> </li> </ul> </li> <li> <span>behaviors</span> <ul> <li class=" "> <a class="typedef" href="can-define.types.TypeConstructor.html" title="Provides a constructor function to be used to convert any set value into an appropriate value."> Type </a> </li> <li class=" "> <a class="function" href="can-define.types.ValueConstructor.html" title="Provides a constructor function to be used to provide a default value for a property."> Value </a> </li> <li class=" "> <a class="function" href="can-define.types.get.html" title="Specify what happens when a certain property is read on a map. get functions work like a can-compute and automatically update themselves when a dependent observable value is changed."> get </a> </li> <li class=" "> <a class="function" href="can-define.types.serialize.html" title="Defines custom serialization behavior for a property."> serialize </a> </li> <li class=" "> <a class="function" href="can-define.types.set.html" title="Specify what happens when a property value is set."> set </a> </li> <li class=" "> <a class="typedef" href="can-define.types.type.html" title="Converts a value set on an instance into an appropriate value."> type </a> </li> <li class="current parent expanded"> <a class="function" href="can-define.types.value.html" title="Returns the default value for instances of the defined type. The default value is defined on demand, when the property is read for the first time."> value </a> </li> </ul> </li> </ul> </li> <li class=" "> <a class="module" href="can-define/list/list.html" title="Create observable lists."> can-define/list/list </a> </li> <li class=" "> <a class="module" href="can-define/map/map.html" title="Create observable objects."> can-define/map/map </a> </li> <li class=" "> <a class="function" href="can-route.html" title="Manage browser history and client state by synchronizing the window.location.hash with a map."> can-route </a> </li> <li class=" "> <a class="module" href="can-route-pushstate.html" title="Changes can-route to use pushstate to change the window&#x27;s pathname instead of the hash. var route = require(&quot;can-route-pushstate&quot;); route(&quot;{page}&quot;, { page: &quot;home&quot; }); route.ready(); route.attr(&quot;page&quot;, &quot;user&quot;); location.pathname; // -&gt; &quot;/user&quot;"> can-route-pushstate </a> </li> <li class=" "> <a class="module" href="can-set.html" title="can-set is a utility for comparing sets that are represented by the parameters commonly passed to service requests."> can-set </a> </li> <li class=" "> <a class="module" href="can-stache.html" title="Live binding Mustache and Handlebars-compatible templates."> can-stache </a> </li> <li class=" "> <a class="module" href="can-stache/helpers/route.html" title="Adds stache helpers that use can-route."> can-stache/helpers/route </a> </li> <li class=" "> <a class="module" href="can-stache-bindings.html" title="Provides template event, one-way, and two-way bindings."> can-stache-bindings </a> </li> </ul> </li> <li class=" "> <a class="page" href="can-ecosystem.html" title="Useful libraries that extend or add important features to the core collection."> Ecosystem </a> </li> <li class=" "> <a class="page" href="can-infrastructure.html" title="Utility libraries that power the core and ecosystem collection."> Infrastructure </a> </li> <li class=" "> <a class="page" href="can-legacy.html" title="Former libraries that we still accept patches for, but are not under active development."> Legacy </a> </li> </ul> </div> </div> <div id="right" class="column"> <div class="top-right"> <div class="top-right-top"> <ul class="top-right-bitovi"> <li class="dropdown"> <a href="http://bitovi.com" class="bitovi icon-bits">Bitovi</a> <ul class="dropdown-menu"> <li><a href="http://bitovi.com">Bitovi.com</a></li> <li><a href="http://bitovi.com/blog/">Blog</a></li> <li><a href="http://bitovi.com/consulting/">Consulting</a></li> <li><a href="http://bitovi.com/training/">Training</a></li> <li><a href="http://bitovi.com/open-source/">Open Source</a></li> </ul> </li> </ul> <div class="brand"> <div class="logo"> <a href="../index.html" alt="CanJS"></a> </div> </div> <ul class="top-right-links"> <li> <a href="https://gitter.im/canjs/canjs">Chat</a> </li> <li> <a href="http://forums.donejs.com/c/canjs">Forum</a> </li> <li> <a class="github-button nav-social" href="https://github.com/canjs/canjs" data-count-href="/canjs/canjs/stargazers" data-count-api="/repos/canjs/canjs#stargazers_count">Star</a> </li> <li> <a href="https://twitter.com/canjs" class="twitter-follow-button nav-social" data-show-count="true" data-show-screen-name="false">Follow @canjs</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> </li> </ul> </div> <div class="breadcrumb"> <li><a href="../index.html">CanJS</a></li> / <li><a href="can-core.html">Core</a></li> / <li><a href="can-define.html">can-define</a></li> / <li><a href="can-define.types.value.html">value</a></li> <li class="breadcrumb-dropdown">/ <a> On this page</a> <ul class="on-this-page"></ul> </li> <div class="nav-toggle" title="Back to top"></div> </div> </div> <div class="bottom-right"> <article> <section class="title"> <div class="page-type"> <h1>value</h1> <div>function</div> </div> <section class="description"> <p>Returns the default value for instances of the defined type. The default value is defined on demand, when the property is read for the first time.</p> </section> </section> <section class="on-this-page-table"> </section> <section class="title-footer"> <ul class="title-links"> <!-- <li><a href="#">docco</a></li> --> <li><a href="//github.com/canjs/can-define/tree/v1.0.4/docs/value.md">source</a></li> <!-- <li><a href="#">download</a></li> --> <!-- <li><a href="#">tests</a></li> --> </ul> </section> <div class="signature"> <h2 class="signature-title"> <code>value()</code> </h2> <p>A function can be provided that returns the default value used for this property, like:</p> <pre><code class="language-js">prop: { value: function(){ return []; } } </code></pre> <p>If the default value should be an object of some type, it should be specified as the return value of a function (the above call signature) so that all instances of this map don't point to the same object. For example, if the property <code>value</code> above had not returned an empty array but instead just specified an array using the next call signature below, all instances of that map would point to the same array (because JavaScript passes objects by reference).</p> <div class="returns"> <h3 class="returns-title">Returns</h3> <p> <code>{*}</code>: <p>The default value. This will be passed through setter and type.</p> </p> </div> </div> <div class="signature"> <h2 class="signature-title"> <code>value</code> </h2> <p>Any value can be provided as the default value used for this property, like:</p> <pre><code>prop: { value: 'foo' } </code></pre> <div class="parameters"> <h3 class="parameters-title">Parameters</h3> <ol> <li><b>defaultVal</b> <code>{*}</code>: <p>The default value, which will be passed through setter and type.</p> </li> </ol> </div> </div> <section class="body"> <p>There is a third way to provide a default value, which is explained in the <a href="can-define.types.ValueConstructor.html" title="Provides a constructor function to be used to provide a default value for a property.">Value</a> docs page. <code>value</code> lowercased is for providing default values for a property type, while <code>Value</code> uppercased is for providing a constructor function, which will be invoked with <code>new</code> to create a default value for each instance of this map.</p> <pre><code class="language-js">// A default age of `0`: var Person = DefineMap.extend({ age: { value: 0 }, address: { value: function(){ return {city: &quot;Chicago&quot;, state: &quot;IL&quot;}; }; } }); </code></pre> </section> <script type="text/javascript"> var docObject = {"src":{"path":"node_modules/can-define/docs/value.md"},"description":"\nReturns the default value for instances of the defined type. The default value is defined on demand, when the property\nis read for the first time.\n","title":"value","name":"can-define.types.value","type":"function","parent":"can-define.behaviors","signatures":[{"code":"value()","description":"\n\nA function can be provided that returns the default value used for this property, like:\n\n```js\nprop: {\n value: function(){ return []; }\n}\n```\n\n\nIf the default value should be an object of some type, it should be specified as the return value of a function (the above call signature) so that all instances of this map don't point to the same object. For example, if the property `value` above had not returned an empty array but instead just specified an array using the next call signature below, all instances of that map would point to the same array (because JavaScript passes objects by reference).\n","params":[],"returns":{"types":[{"type":"*"}],"description":"The default value. This will be passed through setter and type.\n"}},{"code":"value","description":"\n\nAny value can be provided as the default value used for this property, like:\n\n```\nprop: {\n value: 'foo'\n}\n```\n","params":[{"types":[{"type":"*"}],"name":"defaultVal","description":"The default value, which will be passed through setter and type.\n"}]}],"_curReturn":{"types":[{"type":"*"}],"description":"The default value. This will be passed through setter and type.\n"},"_curParam":{"types":[{"type":"*"}],"name":"defaultVal","description":"The default value, which will be passed through setter and type.\n"},"comment":" ","pathToRoot":".."}; </script> </article> <footer><p>CanJS is part of <a href="http://donejs.com" target="_blank">DoneJS</a>. Created and maintained by the core <a href="https://donejs.com/About.html#section=section_Team" target="_blank">DoneJS team</a> and <a href="http://bitovi.com" target="_blank">Bitovi</a>. <strong>Currently 3.0.0.</strong></p></footer> </div> </div> </div> <script> steal = { instantiated: { "bundles/bit-docs-site/static.css!$css" : null } }; </script> <script type='text/javascript' data-main="bit-docs-site/static" src="./static/node_modules/steal/steal.production.js"></script> <script async defer src="https://buttons.github.io/buttons.js"></script> </body> </html>