确保通过函数传递的对象属性等于某些值?

时间:2014-06-05 15:53:11

标签: javascript

我有一个在整个方法中使用某些属性的类。

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();

现在我在想未来的错误。如果有人意外拼错房产怎么办?我想知道是否有一种秘密方式只需要某些属性(除了在包含可能性的单独数组中检查它们)。

1 个答案:

答案 0 :(得分:0)

您可以根据可用的地图测试该属性,只有在有效的情况下才尝试使用该属性

//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,则可以使用数组(下面建议的解决方案)。