foam-framework
Version:
MVC metaprogramming framework
32 lines (23 loc) • 1.08 kB
HTML
<html>
<head>
<link rel="stylesheet" type="text/css" href="..//core/foam.css" />
<script language="javascript" src="../core/bootFOAM.js"></script>
<title>Traits Demo</title>
</head>
<body><script>
MODEL({name: 'PositionTrait', properties: [ 'x', 'y' ]});
MODEL({name: 'SizeTrait', properties: [ 'width', 'height' ]});
MODEL({name: 'Rect', traits: ['PositionTrait', 'SizeTrait']});
var r = Rect.create({x:10, y:20, width: 100, height: 50});
console.log(r.toJSON());
MODEL({name: 'Person', methods: { toString: function() { return "Hello"; } }});
MODEL({name: 'Dog', methods: { toString: function() { return "Woof"; } }});
MODEL({name: 'ExcitedTrait', methods: { toString: function() { return this.SUPER() + '!!!'; } }});
MODEL({name: 'ExcitedPerson', extendsModel: 'Person', traits: ['ExcitedTrait']});
MODEL({name: 'ExcitedDog', extendsModel: 'Dog', traits: ['ExcitedTrait']});
var person = ExcitedPerson.create();
var dog = ExcitedDog.create();
console.log(person.toString());
console.log(dog.toString());
</script></body>
</html>