关于for in的冷门知识点及hasOwnProperty的用法


 1.

var obj = {
			name:"AAA",
			age:18,
			sex:"male",
			__proto__:{Lastname:"Pan"}
		};
		for(var key in obj){
			if(obj.hasOwnProperty(key)){

				console.log(key);
				
			}
		}

通过枚举,打印出对象obj里的每个属性name,age,sex。

其中,关于hasOwnPreperty()的用法:

hasOwnPreperty()剔除原型链上的属性,如果是true,说明不是原型的属性 

1. if(obj.hasOwnPreperty(key)){console.log(obj[key])}即不会把原型上的属性一起打印出来
2. if(!obj.hasOwnPreperty(key)){console.log(obj[key])},只打印原型上的属性,


2.

var obj = {
			name:"AAA",
			age:18,
			sex:"male",
			__proto__:{Lastname:"Pan"}
		};
		for(var key in obj){
			if(obj.hasOwnProperty(key)){
				
				console.log(obj[key]);
				
			}
		}

属性表示方法:
        // 1.obj.key
        // 2.obj[字符串]或[变量 k ]

采用访问属性的第二种方法Obj[变量 k],打印出对象的每个属性值


3.

var obj = {
			name:"AAA",
			age:18,
			sex:"male",
			__proto__:{Lastname:"Pan"}
		};
		for(var key in obj){
			if(obj.hasOwnProperty(key)){
				
				console.log(obj.key);
				
			}
		}

结果会报错,因为有个转换过程:obj.key ---> obj["key"],把变量 key设置为字符串了,当做是某个常量的属性名。

发布了14 篇原创文章 · 获赞 4 · 访问量 8816

猜你喜欢

转载自blog.csdn.net/weixin_41575159/article/details/82387338