我正在创建一个对象,我正用它通过ajax将数据传回服务器。
根据服务器更新应包含的数据将属性添加到对象。其中两个属性位于每个更新对象FruitID
和PeachID
但是,当更新对象为ajax调用呈现自己并且只有这两个属性时,我想取消该调用。
如何确定某个对象只包含某些属性?
感谢您的建议。
答案 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