**p3 JS部分中的7.3遍历对象属性里面的另类解答**<br />要求:输入对象person中的所有键值对
1.首先题目要求是使用for..in方法,答案如下
let person = {name: 'henry',age: 18,family: {papa: 'jack',mama: 'mary',sister: 'jane'}};function byForIn(obj) {for(let key in obj) {if (key === "family") {for(let familyKey in obj[key]) {// for(let familyKey in obj.key) {// 注意这里取得属性值的方法是 对象[属性名]// 不能直接obj.key原因是这里的key是“name”类型,有“”;console.log(familyKey+":"+obj[key][familyKey]);}}else {console.log(key+":"+obj[key]);}}}console.log("使用for...in");byForIn(person);
2.然后另外用object.keys() 方法做出的答案是:
let person = {name: 'henry',age: 18,family: {papa: 'jack',mama: 'mary',sister: 'jane'}};function byObject(obj) {let keys = Object.keys(obj);for(let i = 0; i < keys.length; i++) {if(keys[i] === "family") {let familyKeys = Object.keys(obj[keys[i]]);for(let j = 0; j < familyKeys.length; j++) {// 下面这条语句略微有些难理解// 拆分一下就是:// let family = obj[keys[i]] 或 obj["family"] 这里得到的family就是:obj对象中的family对象// 然后familyKey[j]相当于遍历了一下 family中的“papa”“mama”“sister”属性值console.log(familyKeys[j] + ":" + obj[keys[i]][familyKeys[j]]);}}else {console.log(keys[i]+":"+obj[keys[i]]);}}}console.log("使用for...in");byObject(person);
总结:两个方法对比一下,还是建议用for .. in方法,用object.keys()方法对思维逻辑要求较for .. in方法较高。
然后需要注意以下几点:
1.取出对象属性的方法只有哪两种?
对象[“键名”](注意写法:对象+中括号+中括号里面的带引号键名)
对象.键名(注意:这里有 点 ,而且键名不加引号)
举例如下:person . name 和 person [ “ name ” ]
2.使用objects.keys() 的返回值是带引号的键名,想通过他来获取键值的话,只能用对象【“ ”】方法
( ps:注意keys有“ s ”,keys是object中的一个方法,所以需要加“ . ”,而且后面需要加括号() )
傻瓜记法:对象获取有两种方法,一种带点,一种不带电但是带中括号。
keys是object的一个方法,可以获取带双引号的键名,一般和带中括号的属性获取方法一起用。
