CNode

es中的关于this指针丢失问题

问答
Llinxiaoziruo发布于8 年前最后回复8 年前6 回复3501 浏览0 收藏

let a = { name: 'zaki', say: function() { console.log(this); console.log(this.name); } };

(function() { a.say(); //可以打印出符合期望的的this信息 let fn = a.say; fn(); // 不能打印出符合期望的this信息 })()

查看回复

回复 (6)

J
justjavac#1·8 年前

搜索 “js this” 你就找到答案了

J
justjavac#2·8 年前

js 最难(坑)的就是 this

L
linxiaoziruo#3·8 年前

感谢各位的回答,现在已经完全弄清楚了!

P
pretty-foam#4·8 年前

赋值a.say函数没执行就是一个匿名函数,匿名函数的this指向全局。我这样理解对不对?

Z
zhulinwei#5·8 年前
9
972389149#6·8 年前

class里的方法的this指向的是实例,你可以在构造函数里绑定一下this的指向 class = { constructor (){ this.say = this.say,bind(this); } }

参与回复
登录后即可参与回复。登录