LoginSignup
3
3

More than 5 years have passed since last update.

CoffeeScriptでpoor man's null object

Last updated at Posted at 2013-07-18

Backbone.jsでモックした#saveが返すxhrのメソッドチェーンでテストが通らなくて困ってました。
呼ばれるメソッドがわかっていれば、下記のようにNull Objectっぽいことができます。

nullObjectish = {foo: (-> @), bar: (-> @)}
nullObjectish.foo().foo().bar().bar().foo()
# => { foo: [Function], bar: [Function] }

ちゃんとしたNull Objectの実装は難しいっぽいです。@mizchi がそう言ってました。

(2014/04/25)

クラス対応版

_ = require 'underscore'

class Example
  foo: ->
  bar: ->
  baz: ->

buildPseudoNullObject = (klass) -> _.object ([k, (-> @)] for k, v of klass.prototype)

nullObjectish = buildPseudoNullObject Example
nullObjectish.foo().foo().bar().bar().baz().foo()
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3