函数扩展箭头函数 5-7选择练习1单选题
来源:5-7 选择练习
weixin_慕的地5241954
2019-10-16 16:40:37
1、call(this, fn)方法第一个参数是对象,第二个参数是方法,{id:1}是对象啊,难道能传第三个参数对象吗?还是说对象是fn方法里面的参数?
2、call方法第一个参数不设置,默认是this对象,也就是它本身。那么foo()调用是window对象调用的,
foo.call()调用是foo函数本身调用,foo是函数,不是对象,它如何调用自己呢?
6回答
同学你好,
这样理解是可以的,没有问题,很棒哦!
祝学习愉快!
好帮手慕糖
2019-10-19
同学你好,不是哦。
这里是改变了this指向,指向了一个对象{id:1},不是指向原来foo的作用域对象了。
所以才输出新的对象中的id,且id为1;
希望能帮助到你,祝学习愉快!
好帮手慕糖
2019-10-18
同学你好,因为我们这个访问的是this.id,是this指向的对象上的id,而this指向的是foo这个对象,所以访问的都是这个id,其他的id都没使用到哦。
这里稍微有点绕,同学可以根据之前的回答,结合代码在梳理下哦。
希望能帮助到你,祝学习愉快!
好帮手慕糖
2019-10-18
同学你好,1、也可以如下形式传递,这里是直接写的对象,没有使用变量接收,可以先使用变量接收在传递也是可以的,例:
且第一个参数都是 this 的指向对象,本身就是一个对象哦,我们这里是将this执行了{ id: 1 },按照如上写法就是执行对象obj。
2、是的,后面传递的参数没有用到。
希望能帮助到你,祝学习愉快!
好帮手慕糖
2019-10-17
同学你好,1、不是哦,只有一个this,是表示这几个this指向的是同一个对象,就是外层的foo。
2、既然都指向foo,那么输出的id也是这里的id,是1。所以t1、t2、t3都输出同样的结果。且是3个,不是4个哦。
3、var f = foo.call({ id: 1 })这一步,只是调用了外层的函数,里面的没调用,无法输出的。
希望能帮助到你,祝学习愉快!
好帮手慕糖
2019-10-16
同学你好,1、第一个参数是对象,这里的{id:1}对象就是第一个参数哦。没有第二个参数。
2、不是第一个是this对象哦,而是this指向的是谁,这个对象是谁。
代码中this原本指向的是foo,但是call方法中传入了新的对象,this指向的就是传入的对象{id:1}
希望能帮助到你,祝学习愉快!
相似问题