1

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

根据服务器更新应包含的数据将属性添加到对象。其中两个属性在每个更新对象中FruitID,并且PeachID

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

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

感谢您的建议。

4

3 回答 3

1

听起来你想使用hasOwnProperty

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

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

于 2012-12-20T13:06:24.820 回答
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
于 2012-12-20T13:07:30.873 回答
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
于 2012-12-20T13:07:34.113 回答