FINoM, ну, лучше уж только перечисляться, чем еще и что-то возвращать
как тебе такой вариант?
var B= Class(function( proto ){
proto.define( 'foo', function( ){ return 1 } )
proto.override( 'bar', function( return 2 } )
})
define - создаёт свойство, но бросает исключение, если такое уже есть
override - перегружает свойство предка, но бросает исключение, если такого нет
ну и расширять тут можно:
defineGetter, overrideGetter
defineSetter, overrideSetter
и так далее