Obj Barry
undefined
第12行的【funs】调用时,预期输出 'Global Barry',但现在是undefined
1、复制完后的 funs this指向window,
2、var声明的变量会挂载在window上,而let和const声明的变量不会挂载到window上,它形成了一个块作用域,所以可以改用var声明。
这样试试呢,希望对您有所帮助,有用的话采纳一下吧
//函数表达式
let funs = function () {
console.log(obj.getName());
}
funs();
首先,你的预计输出就是错的,对象外部的变量name ( GB 那个)和obj 一点关系都没有,后面你把对象方法赋给变量后,之所以啥也拿不到,方法是拿到了,但是啥也没返回,是因为 你的funs 没有权限拿到 obj 内部的name,所以输出了 undefined
funs相当于只是复制了一个函数,复制后,函数原先内部的this已经指向了window。 window.name自然就等于了undefined了。