code: function(keyname) {
    const _ = Struct.PriProp(keyname);
    if (_.__proto__) {
      _.__proto__ = Struct.prototype;
    }
    else {
      Object.keys(Struct.prototype).forEach(function(p) {
        Object.defineProperty(_, p, {
          value    : Struct.prototype[p],
          writable : false
        });
      }, this);
    }
    var classFunction;
    Object.defineProperties(_, {
      requires : {
        value: {},
        writable: false
      },
  
      defaults : {
        value: {},
        writable: false
      },
  
      defaultFuncs : {
        value: {},
        writable: false
      },
  
      views: {
        value: {},
        writable: false
      },
  
      parentProps: {
        value: [],
        writable: false
      },
  
      enumerableDescs: {
        value: {},
        writable: false
      },
  
      classFunction : {
        get: function() {
          return classFunction;
        },
        set: function(v) {
          if (classFunction === undefined) {
            classFunction = v;
          }
          else if (classFunction !== v) {
            throw new Error('cannot change classFunction.');
          }
        }
      },
  
      Modifiers : {
        value    : Struct.Modifiers,
        writable : false
      }
    });
    return _;
  }
docs: Struct.js v0.0.1
  
  Copyright 2011, SHIN Suzuki