首页 > 试题广场 >

var obj = { &n...

[单选题]

var obj = {

   name:"zhangsan",

   sayName:function(){

     console.info(this.name);

   }

 }

 var wfunc = obj.sayName;

 obj.sayName();

 wfunc();

 var name = "lisi";

 obj.sayName();

 wfunc();


请选择正确的输出结果
  • zhangsan zhangsan zhangsan zhangsan
  • zhangsan undefined lisi lisi
  • zhangsan undefined zhangsan lisi
  • zhangsan zhangsan zhangsan lisi
没什么好说的,应该没有人错吧,就是this指向问题,一个是window,一个是obj
发表于 2019-02-24 23:54:42 回复(0)

·obj调用的时候,sayName的上下文对象是obj

·赋值给wfunc时,对象变为window,但window没有name属性

·var声明 name,默认挂在window对象下,所以window有了name属性

发表于 2019-03-07 10:33:26 回复(1)
第二个不应该因为变量提升的问题输出  lisi  吗?
发表于 2019-03-07 22:13:03 回复(5)
为什么在浏览器上执行结果是:zhangsan  lisi  zhangsan  lisi
发表于 2019-02-27 15:35:27 回复(1)