将单个参数传递给Object()的目的是什么?

时间:2016-08-19 22:31:45

标签: javascript

在对this previous question的回答中,根据以下代码,将参数传递给Object构造函数,将其作为函数使用是什么目的?

function makeFoo(a, b) {
    var foo = Object.create(Foo.prototype);
    var result = Foo.apply(foo, arguments);
    return Object(result) === result ? result : foo;
}

1 个答案:

答案 0 :(得分:3)

如果Object构造函数已经是对象,则返回其参数。因此,您的代码正在检查result值是否为对象。

在另一个问题的该函数的上下文中,目标是处理“Foo”构造函数在调用而不是通过{{}时尝试返回非对象(如字符串或其他内容)的事实。 1}}。当您使用new调用构造函数时,将忽略任何非对象显式返回值,并且返回值将是构造对象。

这样“makeFoo”的最后一行检查返回的值是否已经是一个对象。如果是,则Object构造函数将返回引用而不创建新对象,因此它将是new参数(“result”)。如果它不是===,那么这意味着构造函数做了一些奇怪的事情,因此将返回构造的“foo”实例。

请注意,另一个问题将此描述为“黑客”。