扫码关注官方订阅号
网上的资料说apply/call传null或者undefined,指向的window对象,但是我 aa.show.call(null),为什么没有指向全局定义的show方法呢。返回一个undefined?
人生最曼妙的风景,竟是内心的淡定与从容!
初学。。错了请指出,大神轻拍。。。
var aa = { a:"hehe", show:function(){alert(this.a)} } aa.show.call(null) //1,call这个方法改变的是函数的this。 (显然,你理解的“为什么没指向全局定义的show方法”是不正确的, call改变了show函数的this,并不是改变了aa这个对象的元素。) //2,因为call改变的是aa.show函数的执行上下文(this),所以aa是aa.show 的caller。 //3,aa.show.call(null),在非严格模式下指向window, 那么this是window,也就相当于 window.show(this.a), 因为 window.a没有定义,所以,是undefined。
另外补充this知识,理解了下面三行,基本 执行环境这块,就算是入门了。
var name = "The Window"; obj = {name:"obj", sayName : function (){ console.log(this.name); } } obj.sayName(); (obj.sayName)(); (obj.sayName = obj.sayName)(); //非严格模式下
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
初学。。错了请指出,大神轻拍。。。
另外补充this知识,理解了下面三行,基本 执行环境这块,就算是入门了。