我正在尝试编写 underscore.js 代码,但我一开始就有问题。此代码段被描述为“创建对 Underscore 对象的安全引用以供以下使用。”
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
我不明白。那是一个简单的函数还是构造函数?乍一看,它有:
this._wrapped = obj;
所以它是构造函数,但它有两个带有返回的“ifs”,那么当 if 为 false 时是构造函数,而当 ifs 中的一个为 true 时,它是函数吗?
还有其他问题:
if (!(this instanceof _)) return new _(obj);
这里的“这个”是什么?为什么这被证明是安全的。如果那是真的,那是创造自己的对象吗?这像递归吗?