0

私はunderscore.jsコードを解決しようとしていますが、最初に問題があります。このスニペットは、「以下で使用するアンダースコア オブジェクトへの安全な参照を作成する」と説明されています。

 var _ = function(obj) {
   if (obj instanceof _) return obj;
   if (!(this instanceof _)) return new _(obj);
   this._wrapped = obj;
 };

理解できません。それは単純な関数ですか、それともコンストラクタですか? 一見すると、次のようになります。

this._wrapped = obj;

したがって、コンストラクターですが、リターン付きの2つの「if」があるため、ifがfalseになるとコンストラクターになり、ifの1つがtrueになると関数になりますか?

そして他の質問:

if (!(this instanceof _)) return new _(obj);

ここで「これ」とは何ですか?そして、なぜそれが安全であることが証明されたのですか。もしそれが真なら、それ自体のオブジェクトを作成していますか? それは再帰のようなものですか?

4

1 に答える 1