优艾设计网

关于this的一个小问题??

代码如下:

function foo() { console.log(this.a); } var a = 2; var o = { a: 3, foo: foo }; var p = { a: 4 }; o.foo(); // 3// 如果 (p.foo = o.foo)(); // 2// 如果 p.foo优艾设计网_Photoshop百科 = o.foo; p.foo(); // 4

(p.foo = o.foo)(); 和 p.foo = o.foo; p.foo();这两个foo,执行结果为什么会不同,这两种写法有不一样吗?


ckwpsdas 2022-05-30 08:06

其实优艾设计网_PS论坛仔细捋一下还是可以理解的1、(p.foo = o.foo)();这句代码分为两部分理解,前一个括号内将o.foo赋值给p.foo,括号最终的运算结果是(foo),后一个括号再执行时,this是指向window的,所以输出的a为2就不难理解了。注意:这里执行的函数是前一个括号里的返回的那个函数,而不是p.foo2、p.foo = o.foo;先给p.foo赋值,然后执行p.foo(); 这时this肯定是指向p的,输出为4


三月薰薰 2022-05-30 08:28

优艾设计网_平面设计

前面一种赋值语句会返回foo函数,后面跟括号就是直接调用,并没有作为对象的方法调用。


0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜