こんな感じに書いていたんですが: function isNonnullString(x) { return (x != null && (typeof x == 'string' || (typeof x == 'object' && x.constructor == String) ) ); } (typeof x == 'object' && x.constructor == String) の部分は、x instanceof String でもいいわけです。つうか、instanceof演算子が使えるなら使ったほうが望ましいですよね。上のケースではさほど問題になりませんが、instanceofならプロトタイプチェーンを使った継承も見てくれるようだし。 instanceof が使えるのは「JavaScript 1.4 から」らしいですが、version ≧ 1.4 は普通に仮定していいこ