Object.dynamicProperty

by khrome

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.4.5/mootools-core-full-compat.js"></script>

JavaScript

// this is just a hack to reinvent part of what defineProperty already does
Object.dynamicProperty = function(object, key, func){
    if(typeOf(object) == 'class'){
        var dummy = {}
        dummy[key] = {
            toString : function(){
                return func();
            }
        };
        object.implement(dummy);
    }else{
        object[key] = {
            toString : function(){
                return func();
            }
        };
    }
};
                  
var a = new Element('a');
Object.dynamicProperty(a, 'mykey', function(){
   return 'awesomeness'; 
});
document.writeln('1:'+a.mykey);

var MyNiftyClass = new Class({});
Object.dynamicProperty(MyNiftyClass, 'mykey', function(){
    return 'spiffitude';
});
var dummy = new MyNiftyClass();
document.writeln('2:'+dummy.mykey);