1.我们有一个对象数组,里面存储着通讯录。
函数lookUp有两个预定义参数:firstName值和prop属性 。
函数将会检查通讯录中是否存在一个与传入的firstName相同的联系人。如果存在,那么还需要检查对应的联系人中是否存在prop属性。
如果它们都存在,函数返回prop属性对应的值。
如果firstName值不存在,返回"No such contact"。
如果prop属性不存在,返回"No such property"。
2.这是系统的代码
function lookUpProfile(name, prop){
// 请把你的代码写在这条注释以下
for (var i = 0; i < contacts.length; i++){
if (contacts[i].firstName === name) {
if (contacts[i].hasOwnProperty(prop)) {
return contacts[i].hasOwnProperty(prop);
} else {
return "No such property";
}
}
}
return "No such contact";
// 请把你的代码写在这条注释以上
}
// 你可以修改这一行来测试你的代码
lookUpProfile("Akira", "likes");
3.这是我的代码
function lookUpProfile(name, prop){
// 请把你的代码写在这条注释以下
for (var i = 0; i < contacts.length; i++){
if (contacts[i].firstName === name) {
if (contacts[i][prop]) {
return contacts[i][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
// 请把你的代码写在这条注释以上
}
// 你可以修改这一行来测试你的代码
lookUpProfile("Akira", "likes");
上面两个代码都是正确的,但是我不知道contacts[i][prop]
和contacts[i].hasOwnProperty(prop)
这两者之间的区别,他们是一样的吗?
contacts[i].hasOwnProperty(prop)只会检测对象自身定义属性存在返回true 不存在false 不会检测对象原型属性