2018-10-10 22:03:03 +00:00
|
|
|
---
|
|
|
|
id: 567af2437cbaa8c51670a16c
|
2021-03-15 03:20:39 +00:00
|
|
|
title: 测试对象的属性
|
2018-10-10 22:03:03 +00:00
|
|
|
challengeType: 1
|
2021-02-06 04:42:36 +00:00
|
|
|
videoUrl: 'https://scrimba.com/c/c6Wz4ySr'
|
2020-04-29 10:29:13 +00:00
|
|
|
forumTopicId: 18324
|
2021-01-13 02:31:00 +00:00
|
|
|
dashedName: testing-objects-for-properties
|
2018-10-10 22:03:03 +00:00
|
|
|
---
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
# --description--
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
有时检查一个对象属性是否存在是非常有用的。 我们可以用对象的 `.hasOwnProperty(propname)` 方法来检查对象是否有指定的属性。 `.hasOwnProperty()` 找到该属性时返回 `true`,找不到该属性时返回 `false`。
|
2020-12-16 07:37:30 +00:00
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
**示例**
|
2020-04-29 10:29:13 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
var myObj = {
|
|
|
|
top: "hat",
|
|
|
|
bottom: "pants"
|
|
|
|
};
|
2021-03-15 03:20:39 +00:00
|
|
|
myObj.hasOwnProperty("top");
|
|
|
|
myObj.hasOwnProperty("middle");
|
2020-04-29 10:29:13 +00:00
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
第一个 `hasOwnProperty` 返回 `true`,第二个返回 `false`。
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
# --instructions--
|
2018-10-10 22:03:03 +00:00
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
修改函数 `checkObj` 检查 `obj` 是否有 `checkProp` 属性。 如果属性存在,返回属性对应的值。 如果不存在,返回`"Not Found"`。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
# --hints--
|
2018-10-10 22:03:03 +00:00
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "gift")` 应该返回字符串 `pony`。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
```js
|
2021-02-06 04:42:36 +00:00
|
|
|
assert(
|
|
|
|
checkObj({ gift: 'pony', pet: 'kitten', bed: 'sleigh' }, 'gift') === 'pony'
|
|
|
|
);
|
2018-10-10 22:03:03 +00:00
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "pet")` 应该返回字符串 `kitten`。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
```js
|
2021-02-06 04:42:36 +00:00
|
|
|
assert(
|
|
|
|
checkObj({ gift: 'pony', pet: 'kitten', bed: 'sleigh' }, 'pet') === 'kitten'
|
|
|
|
);
|
2018-10-10 22:03:03 +00:00
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "house")` 应该返回字符串 `Not Found`。
|
2020-04-29 10:29:13 +00:00
|
|
|
|
2018-10-10 22:03:03 +00:00
|
|
|
```js
|
2021-02-06 04:42:36 +00:00
|
|
|
assert(
|
|
|
|
checkObj({ gift: 'pony', pet: 'kitten', bed: 'sleigh' }, 'house') ===
|
|
|
|
'Not Found'
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({city: "Seattle"}, "city")` 应该返回字符串 `Seattle`。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
assert(checkObj({ city: 'Seattle' }, 'city') === 'Seattle');
|
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({city: "Seattle"}, "district")` 应该返回字符串 `Not Found`。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
assert(checkObj({ city: 'Seattle' }, 'district') === 'Not Found');
|
|
|
|
```
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
`checkObj({pet: "kitten", bed: "sleigh"}, "gift")` 应该返回字符串 `Not Found`。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
assert(checkObj({ pet: 'kitten', bed: 'sleigh' }, 'gift') === 'Not Found');
|
2018-10-10 22:03:03 +00:00
|
|
|
```
|
2020-04-29 10:29:13 +00:00
|
|
|
|
2021-01-13 02:31:00 +00:00
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function checkObj(obj, checkProp) {
|
|
|
|
// Only change code below this line
|
|
|
|
return "Change Me!";
|
|
|
|
// Only change code above this line
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
# --solutions--
|
|
|
|
|
2021-01-13 02:31:00 +00:00
|
|
|
```js
|
|
|
|
function checkObj(obj, checkProp) {
|
|
|
|
if(obj.hasOwnProperty(checkProp)) {
|
|
|
|
return obj[checkProp];
|
|
|
|
} else {
|
|
|
|
return "Not Found";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|