“我认为如果对象有 ahasOwnProperty
他们也应该有 agetOwnProperty
和 a setOwnProperty
”
该hasOwnProperty()
函数告诉您命名属性是否作为对象的直接属性存在,而不是作为从对象原型链中某处继承的属性。in
运算符 - 使用 like -将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);