私はここ1〜2年でおそらく過去1年間に10〜20分を費やしてきましたが、この質問に対する防御的な答えは決して見つかりませんでした。JavaScriptオブジェクトがサブクラスではなく `{}`インスタンスであるかどうかを確認するにはどうすればよいですか?
JavaScriptオブジェクトがサブクラスではなくObject
のインスタンスであるかどうかを確認するにはどうすればよいですか?
arguments[0]
がネイティブObject
を拡張するが、どちらも異なる扱いをしなければならない "オプション"ハッシュ対 "モデル"(MVC)かどうかをチェックすることです。
私は、これらの試みている:いくつかのケースでは動作しません(正確に覚えていませんが、多分regex.constructor、そのようなこと)
// 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)
こと。たぶんそれは、確かに分かりません。
{}
オブジェクトがあるかどうかを知るための防弾方法はありますか?
を変更します。 'Bulletproof'機能そのものではありません。 :) –
BTW - JavaScriptには**サブクラス**がありません。コンストラクタ関数とプロトタイプのみ。 – gnarf