确定对象何时只具有某些属性

时间:2012-12-20 13:02:36

标签: javascript

我正在创建一个对象,我正用它通过ajax将数据传回服务器。

根据服务器更新应包含的数据将属性添加到对象。其中两个属性位于每个更新对象FruitIDPeachID

但是,当更新对象为ajax调用呈现自己并且只有这两个属性时,我想取消该调用。

如何确定某个对象只包含某些属性?

感谢您的建议。

3 个答案:

答案 0 :(得分:1)

听起来好像要使用hasOwnProperty

if (myObject.hasOwnProperty("FruitID")) { ... }

另一种选择可能是使用Object.keys,但它仅在现代浏览器中受支持。但是,进行比较会更容易,看看是否只存在这些属性。

答案 1 :(得分:1)

var obj = {a:"property 1",b:"property 2"} // Or whatever object you want to check.

if(Object.keys(obj).length == 2     // If the object only has 2 keys,
    && obj["FruitID"]   // And FruitID exists as property of the object,
    && obj["PeachID"]){ // And PeachID exists as property of the object,
    // The object only contains FruitID & PeachID;
}

或将其包装在一个函数中:

function isBaseObject(obj){
    return !!(Object.keys(obj).length == 2 && obj["FruitID"] && obj["PeachID"]); // !! to cast the output to a boolean
}

isBaseObject({FruitID:"property 1",PeachID:"property 2"})
//true
isBaseObject({FruitID:"property 1",PeachID:"property 2", a:1})
//false
isBaseObject({a:1})
//false

答案 2 :(得分:0)

您需要使用hasOwnProperty

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

o = new Object();
o.prop = 'exists';

o.hasOwnProperty('prop');   //returns true