zer*_*ero 2 javascript arguments argument-passing
在测试之后,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
Run Code Online (Sandbox Code Playgroud)
有没有办法测试参数"options"是否是对象文字?
PS我正在创建一个允许用户访问其配置选项的模块,我想测试参数是否只是一个对象文字?
T.J*_*der 10
有没有办法测试参数"options"是否是一个对象文字?
不,因为没有意义.您可以测试它是否是一个对象,但它是如何创建的(通过调用函数的文字,通过其他地方的文字,通过new Object反序列化JSON字符串,......)不是维护的信息.
在测试instasnceof之后,我发现如果参数是数组或对象文字,它将返回true
正确.JavaScript中的数组是对象(而不是真正的数组).
如果要测试对象是普通旧对象,可以执行以下操作:
if (Object.prototype.toString.call(options) === "[object Object]") {
// It's a plain object
}
Run Code Online (Sandbox Code Playgroud)
但实际上没有理由这样做.这不是你的问题.只要他们传递的内容具有您期望的属性,就不要试图进一步限制对象.
ps我正在创建一个模块,允许用户传递配置选项,我想测试以确保参数只是一个对象文字.
为什么?如果用户想要使用尚未被声明为文字的对象,那么,你为什么要关心?如果他们想要使用他们通过不同的构造函数创建的对象(例如,而不仅仅是一个普通的对象),再次,你为什么要关心?
| 归档时间: |
|
| 查看次数: |
4403 次 |
| 最近记录: |