Skip to content

Instantly share code, notes, and snippets.

@glassesfactory
Last active December 29, 2015 22:29
Show Gist options
  • Save glassesfactory/7736445 to your computer and use it in GitHub Desktop.
Save glassesfactory/7736445 to your computer and use it in GitHub Desktop.
需要あるかわからんし車輪の再発明臭すごいけどクラスメソッドを継承と言うか無理やりバインドする
class BaseHoge
@foo:()->
console.log "bar"
@extends:(kls)->
props = []
o = @
while o
props = props.concat Object.getOwnPropertyNames o
o = Object.getPrototypeOf o
props = _.uniq(props)
props = _.difference(props, gy.objProps)
for name in props
kls[name] = @[name] if typeof @[name] is "function" and name not in kls
class ExtendHoge extends BaseHoge
constructor:()->
BaseHoge.extends ExtendHoge
$ ->
BaseHoge.foo()
#result...
# bar
###
俺々便利 utils.
何回か投稿してるので5枚集めるとおもちゃの缶づm(ry
###
do(window)->
gy =
getPropNames:(target)->
props = []
o = target
while o
props = props.concat Object.getOwnPropertyNames o
o = Object.getPrototypeOf o
#プロパティ名を一意にする
props = _.uniq props
return props
do ->
#Object のプロパティ一覧を出して継承の対象外リストとする
gy.objProps = gy.getPropNames Object
#super も対象外リストに追加
gy.objProps.push "__super__"
gy.window = gy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment