欢迎光临散文网 会员登陆 & 注册

JS中的return与this

2022-11-02 16:16 作者:十叁みずき  | 我要投稿

this

1

我们要打印fun fun()和 new fun()

此时对应的结果应该为函数体 return返回值 和 fun{ xxx:'1231321'}

一般来说打印函数不带括号是不执行函数的内容的.

其中如果不加new fun() this指向window 加了之后this指向new的对象本身

例子1

第一个Foo.getName()直接对号入座 打印2

第二个getName() 我们发现有一个变量声明 和一个函数声明 此时由于提升 变量的优先级要大于函数 打印4

第三个先执行Foo()后返回this,这时this指向window 也就是window.getName()打印输出1

第四个再次使用getName(),由于第三个改变了全局的getName() 所以输出结果和第三个一样

如果我们要执行new Foo().getName()通过原型查找机制,先在自身找,没有找到=>到构造函数Foo()中去找,由于Foo()中的getName指向window ,没有加this,所以构造函数也没有=>到自身原型去找没有=> 到构造函数原型的Foo.prototype.getName找到了 打印输出3

例子2

o.b.fn()=>fn里面两个打印输出 一个是this.a 一个是this指向谁=>fn是b中的,所以this指向b,b中的a是2.如果b中没有a的话,由于this的存在,a不会去找o中的a,结果为undefined.

例子3

let a=new A() 由于new操作符 a现在是对象A{name:123}

然后输a.getA,在a中没有找到getA方法,到构造函数中去找也没有,到原型中去找到了

于是打印this,这时候的this指向全局window

例子4

对于obj,test1() 函数中调用函数是一个闭包的过程 this指向window 为11

而obj.test2() this指向obj 为6

JS中的return与this的评论 (共 条)

分享到微博请遵守国家法律