ウェブアプリでエディタを作っていて、自動補完を実装するために、プロパティを抽出するコードを書きました。
propertyList = (value) -> switch typeof value when 'string' then Object.getOwnPropertyNames value.__proto__ when 'undefined' then [] else object = new Object value # 基本タイプをラッパークラスのインスタンスに変換 if object instanceof Array Object.getOwnPropertyNames(Object.getPrototypeOf object) else Object.getOwnPropertyNames(Object.getPrototypeOf object).concat Object.getOwnPropertyNames(object)
(記述はCoffeeScriptです。)
長らくJavaScriptでは組込みメソッドを取り出せないと思っていたので、ちょっと感激しました。