こんな感じに書いていたんですが:
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 は普通に仮定していいことなのだろうか? 世間の状況がわからなーい。