我正在尋找的基本上是一個hasOwnProperty()或'in'函數,它是遞歸的,並在鏈中查看對象中是否存在鍵或屬性。如何檢查一個對象或其子對象/子對象是否具有Javascript中的屬性/鍵?
比如我有對象:
var user = {
username: "Derpette",
profile: {
role: 'admin',
sex: 'female',
emails:['[email protected]']
}
}
我想知道是否有在該對象或其子對象的關鍵/屬性「角色」的任何地方。 所以我想打電話給user.hasProperty('role')
,它會返回true
。
現在我正在使用帶有斷言鏈的if語句來檢查它,但它看起來並不乾淨,特別是對於深層嵌套屬性。
例如,我會做:
if(user && user.profile && user.profile.role){
//Manipulate/Use user.profile.role here
}
用例此的另一個例子是,如果我的MongoDB過濾更新修飾符從客戶的到來。我想確保他們沒有更新自己的角色,所以我需要檢查屬性'角色'是不是在他們的mongoDB修飾符json對象的某處。但它可能在修飾符中的一些地方,因此if屬性鏈接對於這種情況不起作用。
我是否需要編寫自己的遞歸hasOwnProperty?我在想,像這樣的東西應該已經存在於像jquery或underscores.js或sugar.js這樣的項目中,但我似乎無法找到它。
我敢肯定沒有一個。但你可以很容易地做出這樣的功能 – Ian
例如:http://jsfiddle.net/N82aZ/2/ – Ian