我当前的代码是错误的,但它可能更好地解释我想做什么,用 CoffeeScript 编写:
implement = (the_class) ->
the_class::__defineGetter__ 'now', -> @[@length - 1]
the_class::__defineGetter__ 'init', -> @[...(@length - 1)]
the_class::__defineGetter__ 'head', -> @[0]
the_class::__defineGetter__ 'body', -> @[1..]
class List extends Array
List::__defineGetter__ 'last', -> @[@length - 1]
class Text extends String
implement List
implement Text
a = new Text 'xxx'
console.log a.now
主要是,我想以head init body tail
如上所述的 OOP 方式使用带有简单方法的字符串和数组,例如 ,。但我不想污染全球范围。我试图从 Array 和 String 中继承新类,但它无法在我的代码中工作。