gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:26:17 25 4
gpt4 key购买 nike

在对 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;
}

最佳答案

如果对象已经是对象,则对象构造函数将返回其参数。因此,您的代码正在执行的操作是检查 result 值是否是一个对象。

在另一个问题的该函数的上下文中,目标是处理这样一个事实:“Foo”构造函数在通过 new 以外的方式调用时可能会尝试返回非对象(例如字符串或其他内容)。当您使用 new 调用构造函数时,任何非对象显式返回值都会被忽略,返回值将是构造的对象。

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

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

关于javascript - 将单个参数传递给 Object() 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39048533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com