扫码关注官方订阅号
为什么这里的this 指向 window ? 我是看到作用域链的时候,实际在调用odd方法时创建了上下文,this为什么指向window?
认证0级讲师
首先要清楚 odd 并不是一个方法,只有当函数作为对象的属性调用时,才称之为方法
odd
//方法 o.add(); //函数 add();
当函数作为方法被调用时 this 的指向是调用函数的对象(除非显式的被修改)
this
当函数直接被调用时 this 指向 window(在严格模式中指向 undefined)
window
undefined
补充:
当函数作为构造函数被调用时(使用new), this指向一个新对象,这个新对象的原型指向构造函数的prototype属性
new
prototype
//构造函数 new Add();
函数如果不是使用 new 运行或者是使用 apply、call、bind 方法的话,this都指向全局对象(有的环境没window所以这么说)你要指向的话请 new odd();
apply
call
bind
this永远都指向调用该方法的对象
这里要搞明白函数的定义:包括在花括号的代码块。既然是代码块,又不是构造函数creat一个新对象,那么再复杂的函数,里面的this也指向全局对象
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先要清楚
odd并不是一个方法,只有当函数作为对象的属性调用时,才称之为方法当函数作为方法被调用时
this的指向是调用函数的对象(除非显式的被修改)当函数直接被调用时
this指向window(在严格模式中指向undefined)补充:
当函数作为构造函数被调用时(使用
new),this指向一个新对象,这个新对象的原型指向构造函数的prototype属性函数如果不是使用
new运行或者是使用apply、call、bind方法的话,this都指向全局对象(有的环境没window所以这么说)你要指向的话请 new odd();
this永远都指向调用该方法的对象
这里要搞明白函数的定义:包括在花括号的代码块。既然是代码块,又不是构造函数creat一个新对象,那么再复杂的函数,里面的this也指向全局对象