var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
console.log(this.p);
//为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}
请各位指点一下,说明其中的原理,谢谢!
var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
console.log(this.p);
//为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}
请各位指点一下,说明其中的原理,谢谢!
var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
console.log(this.p);
//为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}
for...in 语句是一个对对象属性的枚举操作
for(var p in person){
首先会在全局作用域下或某个函数作用域下声明一个变量p,同时将person的某个可遍历属性名赋值给p
所以执行 console.log(this.p);
时,如在全局环境而非函数内执行,其值wig
如果函数体内执行,其值为undefined,如下
(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()
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
全局环境下,
this===window
因而
this.p===window.p===p
而在for p in person语法中
被枚举赋值给p的是person的键
因此你可能需要的是console.log(person[p])