私はここで 10 分か 20 分を過ごしましたが、おそらく過去 1 年間でおそらく十数回、この質問に対する完全な答えを見つけることはできませんでした。
Object
JavaScript オブジェクトがサブクラスではなくインスタンスであるかどうかを確認するにはどうすればよいですか?
これの使用例の 1 つarguments[0]
は、「オプション」ハッシュと「モデル」(MVC) のどちらであるかを確認することです。どちらもネイティブを拡張しObject
ますが、異なる方法で処理する必要があります。
私はこれらを試しました:
// some helper to get constructor name
function klassName(fn) {
if (fn.__name__) {
return fn.__name__;
}
if (fn.name) {
return fn.name;
}
return fn.toString().match(/\W*function\s+([\w\$]+)\(/));
};
var Model = function() {};
m = new Model;
o = {};
Object(o) === o; // true
Object(m) === m; // true, thought it might be false
klassName(o.constructor); // Object
klassName(m.constructor); // Model
場合によってはうまくいきませんklassName(m.constructor)
(正確には思い出せませんが、おそらく regex.constructor のようなものです)。そうかもしれませんが、確かなことはわかりません。
何かが{}
オブジェクトであるかどうかを確認する防弾方法はありますか?