Date
Javascript のネイティブオブジェクト タイプのラッパーを作成したいと考えています。日付に固有の各プロパティについて、クラスが所有する日付に単純にプロキシしたいと思います。コーヒースクリプトを使用していますが、日付オブジェクトを変更するメソッドを除いてすべてが機能しているようです。バインディングの設定が間違っているのではないかと思っています。
これが私がこれまでに持っているものです。コンパイルしたものをチェックアウトすると(JSLintでうまく動作するように変更されていますが、ブラウザで見ているものと同じ動作です)、その動作を確認できます:http://jsfiddle.net/XRgKM/1/
class CP.MyDate
@DateProperties: (name for name in Object.getOwnPropertyNames(window.Date.prototype) when _.isFunction(window.Date.prototype[name]))
constructor: (@date = new Date()) ->
# Hack to allow me to use the __bind function like the rest of the
# 'coffeescript native' class functions:
bnd = `__bind`
for name in MyDate.DateProperties
bnd(@[name], @)
# Validate parameter:
if not @date instanceof Date
throw new Error("date must be a native date")
# Copy date locally:
@date = new Date(@date)
test: () => alert("TEST")
for name in @DateProperties
MyDate.prototype[name] = () ->
returnVal = @date[name].apply(@date, arguments)
if returnVal isnt @date and returnVal instanceof Date
returnVal = new MyDate(returnVal)
return returnVal