我是javascript的新手。我有一个拍摄物体的功能。但是我如何确保调用者遵循我想要的对象结构。由于javascript中没有类的概念,我无法创建模型类并让调用者使用它?
function foo(myObject)
{
}
无论是谁打电话都应该给我
{
Count,
[
{
FirstName,
LastName
},
{
FirstName,
LastName
},
]
}
答案 0 :(得分:2)
那么你可以简单地检查你收到的对象类型作为参数,然后检查这些值是否实际存在,如下所示:
function foo(myObject) {
if (typeof myObject !== 'object') {
// doesn't match
return;
}
if (typeof myObject.Count === 'undefined') {
// no count property
}
}
但是,从您的问题来看,似乎您想要更多地修复哪种对象应该作为参数发送,这也可以在javascript中执行,例如:
function MyParamOptions() {
// define properties here
this.persons = [];
Object.defineProperty(this, 'Count', {
get: function() {
return this.Names.length;
},
set: function() {
// dummy readonly
}
});
}
然后你可以通过说
来实例化这个类的实例var options = new MyParamOptions();
options.persons.push({ firstName: 'bla', lastName: 'bla' });
并更改foo函数内的检查,如
function foo(myObject) {
if (myObject instanceof MyParamOptions) {
// here myObject is MyParamOptions, so you can access the persons array, the Count property etc...
}
}
// and call foo with your MyParamOptions
foo(options);
然而,这不会在编译时抛出任何警告,因此人们可以使用任何类型的参数调用您的函数。如果您在编译时查找错误,可以查看TypeScript或类似的技术,然后将您的TypeScript代码转换为javascript)