gpt4 book ai didi

javascript - 如何在 JavaScript 中检查参数是否是对象(而不是数组)

转载 作者:行者123 更新时间:2023-12-03 02:08:18 26 4
gpt4 key购买 nike

测试 insstasnceof 后,我发现如果参数是数组或对象文字,它将返回 true。

function test(options){
if(options instanceof Object){alert('yes')}//this will alert for both arrays and object literals
}
test({x:11})// alerts
test([11])// alerts as well but I do not want it to

有没有办法测试参数“options”是否是对象文字?

附注我正在创建一个允许用户访问其配置选项的模块,并且我想测试参数是否仅为对象文字

最佳答案

is there a way to test if the argument "options" is an object literal?

不,因为这没有意义。您可以测试它是否是一个对象,以及它是如何创建的(通过函数调用中的文字,通过其他地方的文字,通过new Object,通过反序列化JSON 字符串,...) 不是维护的信息。

after testing out instasnceof i found that it will return true if the argument is an array or an object literal

正确。 JavaScript 中的数组是对象(和 not really arrays )。

如果你想测试一个对象是否是一个普通的旧对象,你可以这样做:

if (Object.prototype.toString.call(options) === "[object Object]") {
// It's a plain object
}

但确实没有理由这样做。这不是你的问题。只要他们传递给您的内容具有您期望的属性,就不要试图进一步限制对象。

p.s. i'm making a module that will allow the user to pass it configuration options and i want to test to make sure that the argument is only an object literal.

为什么?如果用户想要使用一个尚未被声明为文字的对象,那么你为什么要关心呢?如果他们想使用通过不同的构造函数创建的对象(例如,而不仅仅是一个普通对象),那么你为什么要关心呢?

关于javascript - 如何在 JavaScript 中检查参数是否是对象(而不是数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741618/

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