扫码关注官方订阅号
var person={wbg:18}; console.log(person.wbg); //此处显示18 for(var p in person){ console.log(this.p); //为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18? }
请各位指点一下,说明其中的原理,谢谢!
业精于勤,荒于嬉;行成于思,毁于随。
全局环境下,this===window因而this.p===window.p===p而在for p in person语法中被枚举赋值给p的是person的键因此你可能需要的是console.log(person[p])
for...in 语句是一个对对象属性的枚举操作
for(var p in person){首先会在全局作用域下或某个函数作用域下声明一个变量p,同时将person的某个可遍历属性名赋值给p所以执行 console.log(this.p);时,如在全局环境而非函数内执行,其值wig如果函数体内执行,其值为undefined,如下
for(var p in person){
console.log(this.p);
(function(){ for(var prop in person){ console.log(prop); console.log('>>'+this. prop);//undefined } }());
如要18,那就执行persion[p]
总觉得这里的标题应该是this指向问题
var person={ wbg:18, show:function(){ console.log(this.wbg) } } person.show()
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
全局环境下,
this===window
因而
this.p===window.p===p
而在for p in person语法中
被枚举赋值给p的是person的键
因此你可能需要的是console.log(person[p])
for...in 语句是一个对对象属性的枚举操作
for(var p in person){首先会在全局作用域下或某个函数作用域下声明一个变量p,同时将person的某个可遍历属性名赋值给p
所以执行
console.log(this.p);时,如在全局环境而非函数内执行,其值wig如果函数体内执行,其值为undefined,如下
如要18,那就执行persion[p]
总觉得这里的标题应该是this指向问题