Postponed property definitions with Troop

Basic example for troop.postpone(). Postponed properties don't get evaluated until first access.

by Dan Stocker

HTML

<script src="https://dl.dropbox.com/u/9258903/JavaScript/dessert-0.3.2.js"></script>
<script src="https://dl.dropbox.com/u/9258903/JavaScript/troop-0.6.1.js"></script>

JavaScript

var host = {};

troop.postpone(host, 'propertyName', function(host, propertyName, extraParam) {
    // will be assigned to `host.propertyName`
    return 'Property_' + extraParam;
}, 'extraParam');

// host.propertyName not resolved yet
$('body').append(
    "property value before access: " +
    typeof Object.getOwnPropertyDescriptor(host, 'propertyName').value +
    "<br />");

// host.propertyName resolved on first access
$('body').append(
    "property value after first access: " +
    host.propertyName +
    "<br />"
);