其实仔细捋一下还是可以理解的1、(p.foo = o.foo)();
这句代码分为两部分理解,前一个括号内将o.foo
赋值给p.foo
,括号最终的运算结果是(foo)
,后一个括号再执行时,this
是指向window
的,所以输出的a为2就不难理解了。注意:这里执行的函数是前一个括号里的返回的那个函数,而不是p.foo
2、p.foo = o.foo;
先给p.foo
赋值,然后执行p.开发者_运维知识库foo();
这时this
肯定是指向p
的,输出为4
三月薰薰 开发者_如何学C 2022-05-30 08:28
前面一种赋值语句会返回foo函数,后面跟括号就是直接调用,并没有作为对象的方法调用。
精彩评论