测试出来后instasnceof
我发现如果参数是数组或对象文字,它将返回 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”是否是对象文字?
附:我正在创建一个允许用户访问其配置选项的模块,并且我想测试参数是否只是一个对象字面量 or not?
有没有办法测试参数“options”是否是对象文字?
不,因为这没有意义。你可以测试一下是否是object,但是它是如何创建的(通过函数调用中的文字,通过其他地方的文字,通过new Object
,通过反序列化 JSON 字符串,...) 不是维护的信息。
测试完 instasnceof 后,我发现如果参数是数组或对象文字,它将返回 true
正确的。 JavaScript 中的数组是对象(并且不是真正的数组).
如果你想测试一个对象是否是一个普通的旧对象,你可以这样做:
if (Object.prototype.toString.call(options) === "[object Object]") {
// It's a plain object
}
但确实没有理由这样做。这不是你的问题。只要他们传递给您的内容具有您期望的属性,就不要试图进一步限制该对象。
附注我正在制作一个模块,允许用户传递配置选项,并且我想进行测试以确保参数只是一个对象文字。
为什么?如果用户想使用一个尚未被声明为文字的对象,那么你为什么要关心呢?如果他们想使用通过不同的构造函数创建的对象(例如,而不仅仅是一个普通对象),那么你为什么要关心呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)