「我認爲,如果對象有一個hasOwnProperty
他們也應該有 一個getOwnProperty
和setOwnProperty
」
的hasOwnProperty()
函數告訴你命名的屬性是否存在爲對象的直接屬性,與從對象的原型鏈中某處繼承的屬性相比。 in
運算符(如if (someProperty in someObject) {}
)會告訴您該對象是否在原型鏈中的任何位置具有該屬性。
你並不需要一個相應的setOwnProperty()
功能,因爲你可以說:
someObject[someProperty] = someValue;
我猜相應getOwnProperty()
功能的想法那種有道理的,如果你想有一個函數,只返回一個值指定的屬性是直接屬性,但是如果找到屬性是,則無法指示指定的屬性未找到,因爲null,undefined,false等都是合法的潛在值。所以爲了達到這個目標,你需要使用if (hasOwnProperty())
作爲一個兩步過程。
但這聽起來不像你想要做的那樣。如果我正確理解你,你只需要一些方法來設置屬性名稱在變量中的屬性(在你的情況下,一個數組元素)。你沒有說清楚你想要哪些值與這些屬性相關聯,所以我只使用true
。
var arr = ['has_cats', 'has_dogs'];
var obj = {}; // note {} is generally preferred to new Object();
for(var i=0; i < arr.length; i++) {
// if the property doesn't already exist directly on
// the object
if(!obj.hasOwnProperty(arr[i])) {
// set the object property
obj[arr[i]] = true;
}
}
// can access with bracket notation
alert(obj["has_cats"]);
// can access with dot notation
alert(obj.has_cats);
毆打我10秒:( – karim79
發生在我身上;) – mikeycgto
投了你的答案,但選擇了另一個努力。謝謝你們的迴應。 –