1. **p3 JS部分中的7.3遍历对象属性里面的另类解答**<br />要求:输入对象person中的所有键值对

    1.首先题目要求是使用for..in方法,答案如下

    1. let person = {
    2. name: 'henry',
    3. age: 18,
    4. family: {
    5. papa: 'jack',
    6. mama: 'mary',
    7. sister: 'jane'
    8. }
    9. };
    10. function byForIn(obj) {
    11. for(let key in obj) {
    12. if (key === "family") {
    13. for(let familyKey in obj[key]) {
    14. // for(let familyKey in obj.key) {
    15. // 注意这里取得属性值的方法是 对象[属性名]
    16. // 不能直接obj.key原因是这里的key是“name”类型,有“”;
    17. console.log(familyKey+":"+obj[key][familyKey]);
    18. }
    19. }
    20. else {
    21. console.log(key+":"+obj[key]);
    22. }
    23. }
    24. }
    25. console.log("使用for...in");
    26. byForIn(person);

    2.然后另外用object.keys() 方法做出的答案是:

    1. let person = {
    2. name: 'henry',
    3. age: 18,
    4. family: {
    5. papa: 'jack',
    6. mama: 'mary',
    7. sister: 'jane'
    8. }
    9. };
    10. function byObject(obj) {
    11. let keys = Object.keys(obj);
    12. for(let i = 0; i < keys.length; i++) {
    13. if(keys[i] === "family") {
    14. let familyKeys = Object.keys(obj[keys[i]]);
    15. for(let j = 0; j < familyKeys.length; j++) {
    16. // 下面这条语句略微有些难理解
    17. // 拆分一下就是:
    18. // let family = obj[keys[i]] 或 obj["family"] 这里得到的family就是:obj对象中的family对象
    19. // 然后familyKey[j]相当于遍历了一下 family中的“papa”“mama”“sister”属性值
    20. console.log(familyKeys[j] + ":" + obj[keys[i]][familyKeys[j]]);
    21. }
    22. }else {
    23. console.log(keys[i]+":"+obj[keys[i]]);
    24. }
    25. }
    26. }
    27. console.log("使用for...in");
    28. byObject(person);

    总结:两个方法对比一下,还是建议用for .. in方法,用object.keys()方法对思维逻辑要求较for .. in方法较高。
    然后需要注意以下几点:
    1.取出对象属性的方法只有哪两种?
    对象[“键名”](注意写法:对象+中括号+中括号里面的带引号键名)
    对象.键名(注意:这里有 点 ,而且键名不加引号)
    举例如下:person . name 和 person [ “ name ” ]
    2.使用objects.keys() 的返回值是带引号的键名,想通过他来获取键值的话,只能用对象【“ ”】方法
    ( ps:注意keys有“ s ”,keys是object中的一个方法,所以需要加“ . ”,而且后面需要加括号() )

    傻瓜记法:对象获取有两种方法,一种带点,一种不带电但是带中括号。
    keys是object的一个方法,可以获取带双引号的键名,一般和带中括号的属性获取方法一起用。