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,我想我只需要检查一下就可以了。