作品分享
问答交流
发现
任务
客服工单
eg1: 起首这两种写法都是一样的,这里 a.say是对象a在调用,由于平凡函数的this指向调用方,因此这里的this指向a。
eg2:我们再来验证下: 这里我们将a.say的方法引用赋值给了b,然后用window.b调用,因此这里的this.name中this指向window
eg1: 这里say方法是箭头函数,在界说时a对象内是没有this的,当前this指向window.。window.b()固然末了打印的是全局name,但是现实上是和调用方无关的,this是在界说的时间就确定了。
eg2: 这里箭头函数界说在函数内部,若当做平凡函数直接调用,this为undefined,若当做构造函数实例化则this指向构造函数所创建的对象实例。 有的同砚就想,哎呀?不是一开始就确定了this吗,怎么值还不一样诶?留意,这里当做构造函数使用相当于把它当做类了,性子都不一样,this不一样完满是可以明确的。 另有一点要留意,这里是用的new 一个实例的方式调用的,在严酷模式下构造函数不加new直接调用,由于this是undefined,this.name = xxxx 会报错,如下:
eg3: 这个例子出自这篇文章,具有误导性,但是明确了上面eg2这个例子你就明确了。这里person当做构造函数在使用,函数内getval是界说在构造函数内部的箭头函数,由于对象o在界说时是没有this的,因此getval内的this是构造函数的this,也就是指向构造函数所创建的对象实例。但是,person并没有返回这个this,该构造函数返回的是另一个对象o,但无论是返回的什么,getval的this在界说时就确定了,那就是构造函数内的this。
举报
本版积分规则 回帖后跳转到最后一页
Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )
GMT+8, 2025-8-24 01:23, Processed in 0.119183 second(s), 35 queries.© 2003-2025 cbk Team.