关于this指向思考

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于this指向思考相关的知识,希望对你有一定的参考价值。

     事情起因为《js函数式编程指南》里面看到这段话:

技术分享

上例DB对象中的save方法作为参数传入到fs的readFile,按道理this指向DB,为啥作者的意思是存在this指针可能会指向其他地方?

this指向,当前对象:全局环境下调用函数,就是window,构造函数中使用就是实例化对象,对象方法调用就是方法点前的对象,所以有些地方需要This替换this或者,bind绑定

So:

name="window";

var a={name:"obj",say:function(){return this.name}()};

a.say;

运行结果:"window"

要是底层API类似上面的写法,那this指针就会出现问题,产生意想不到的的错误。为了安全,避免使用this。

上面例子解释:say作为a 的属性,属性值是一个匿名函数对象(ps:出现匿名函数的地方 this指向widow,匿名函数可以理解为),读取属性值,立即执行匿名函数,this指针在作用域中随着变量声明提前时就创立,但是未指向方向,执行时才确认方向,故此时是指向window

以上是关于关于this指向思考的主要内容,如果未能解决你的问题,请参考以下文章

「思考题」54个JavaScript基础知识总结

关于 js 中 this 指向的问题

setTimeout中所执行函数中的this,永远指向window

关于在vue中结合数组方法的this的指向问题

关于JS中this对象指向问题总结

关于js里的this指向,函数的prototype,闭包理解