直接上代码:
var test = { outer: function () { // 此时this指向test对象 console.log(this); function inner() { // 此时this指向window console.log(this); } inner(); } }
造成上述代码this指向不同的原因是什么呢?
到现在都是很明白,求大神解答!
抛出函数借用和构造函数,就剩两种,一种是普通函数,一种是对象方法。
对象方法指向对象,普通函数指向全局
谁调用了这个函数,那么this就指向谁。
this
this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test的指向只和你如何调用这个函数有关,比如你说第一个
test
test.outer()
/a/11...
这是闭包问题,在给一个对象通过对象字面量进行了赋值属性 其中包括一个函数方法,这个函数方法有个控制台输出,然后这个函数里面又声明一个函数形成了闭包问题,闭包在一般情况下this都是指向window的.有特殊情况可以改变this的值 你可以看看我写的一篇有关闭包的文章 你会有收获的 手机不方便贴 你可以看我个人资料
其实把匿名回答的都不对!在对象里函数内部定义的函数,是不能直接获取上一级环境变量的 ,更不能直接得到里面的this 要对她定义变量 比如 var that=this;这也你就能拿到上级的this对象; var test = {
outer: function () { // 此时this指向test对象 var that=this console.log(this); function inner() { // 此时this指向window console.log(that); } inner(); } }
抛出函数借用和构造函数,就剩两种,一种是普通函数,一种是对象方法。
对象方法指向对象,普通函数指向全局
谁调用了这个函数,那么
this
就指向谁。
指向this
的指向只和你如何调用这个函数有关,比如你说第一个this
指向test
,这可不一定,有的是办法把这个this
的指向改掉。只有当你运行test.outer()
的时候,第一个this
才会指向test
的指向只和你如何调用这个函数有关,比如你说第一个test
,这可不一定,有的是办法把这个🎜的指向改掉。只有当你运行test.outer()
的时候,第一个🎜才会指向test
。🎜/a/11...
这是闭包问题,在给一个对象通过对象字面量进行了赋值属性 其中包括一个函数方法,这个函数方法有个控制台输出,然后这个函数里面又声明一个函数形成了闭包问题,闭包在一般情况下this都是指向window的.有特殊情况可以改变this的值 你可以看看我写的一篇有关闭包的文章 你会有收获的 手机不方便贴 你可以看我个人资料
其实把匿名回答的都不对!在对象里函数内部定义的函数,是不能直接获取上一级环境变量的 ,更不能直接得到里面的this 要对她定义变量 比如 var that=this;这也你就能拿到上级的this对象;
var test = {