JSObject.construct に .object が渡る → as? JSObject でok 2. JSObject.construct に .function が渡る → x: JSFunction で取り出して as? JSObject は成功するから、動的にJSFunctionな静的なJSObjectが返る 3. JSFunction.construct に .object が渡る → x: JSObject で取り出して as? JSFunction に失敗して nil 4. JSFunction.construct に .function が渡る→ x: JSFunction で取り出して as? JSFunction で OK.jsValue を使う限り問題なし 3はダウンキャストの失敗だから失敗でok (edited)