关于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实现同样的效果再一次改变指针。有没有更好的解释?
21
收起
正在回答
1回答
同学你好,大致理解的是正确的。不过描述中有一些问题,如下。
1、call和apply方法,都可以改变方法中this的指向。因此这里说“指针”是不规范的;
2、对的,输出的是window.name的值;
3、是的,person对象没有变化;
4、把window作为参数,传递给了call、apply,那么person.getName方法里的this,指代的就是window,因此两种方法,访问的是window下的name属性,即xm.
可以再理解一下。祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星