关于call和apply

关于call和apply

 

var name='xm';

var person ={};

person.name = 'xh';

person.getName = function(){

return this.name;

};

Console.log(person.getName());  //xh

Console.log(person.getName.call(window));  //xm 把指针改为window

Console.log(person.getName.apply(window));  //xm 指针改为window

 

老师,这里改变指针,是不是把person对象的person改成了window对象,实际输出的是window.name的值?但是原来的person对象本身是不变的?所以调用person还需要用apply实现同样的效果再一次改变指针。有没有更好的解释?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,大致理解的是正确的。不过描述中有一些问题,如下。

1、call和apply方法,都可以改变方法中this的指向。因此这里说“指针”是不规范的;

http://img1.sycdn.imooc.com//climg/5f8575c30989009702400047.jpg

2、对的,输出的是window.name的值;

3、是的,person对象没有变化;

4、把window作为参数,传递给了call、apply,那么person.getName方法里的this,指代的就是window,因此两种方法,访问的是window下的name属性,即xm.

可以再理解一下。祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师