Javascript 确保通过函数传递的对象属性等于某些值?
我有一个类,它在整个方法中使用某些属性Javascript 确保通过函数传递的对象属性等于某些值?,javascript,Javascript,我有一个类,它在整个方法中使用某些属性 function MyClass(elementSelectors) { this.elements = {}; for (var elementSelector in elementSelectors) { this.elements[elementSelector] = document.querySelector(elementSelector); } } myClass.prototype.usesAnEl
function MyClass(elementSelectors) {
this.elements = {};
for (var elementSelector in elementSelectors) {
this.elements[elementSelector] = document.querySelector(elementSelector);
}
}
myClass.prototype.usesAnElement = function () {
console.log(this.elements['header']);
};
var elementSelectors = {
headr: '[class="header"]' // this is sort of an error?
}
var myClass = new MyClass();
现在我在考虑未来的错误。如果有人不小心拼错了一处房产怎么办。我想知道除了在包含可能性的单独数组中检查属性之外,是否有一种只需要某些属性的秘密方法。您可以根据可用属性的映射测试属性,并且只有在有效的情况下才尝试使用它
//available properties
avail = {
"header": true, //or anything that evaluates to true
"foo": true,
"bar": true
}
//test if a property is valid before trying to do something with it
if (Object.prototype.hasOwnProperty.call(avail, elementSelector)) {
this.elements[elementSelector] = document.querySelector(elementSelectors[elementSelector]);
}
编辑
或者,如果您不喜欢IE8支持,或者不介意为indexOf添加polyfill,您可以使用下面建议的阵列解决方案。没有秘密。您必须显式测试所需的属性是否存在;最好尝试[header,foo,bar]。indexOfelementSelector!=-1或avail.hasownpropertyelementselectortanks,我想我只需要检查一下就可以了。