为什么“this”是这个JavaScript中的Window对象
Why is `this` the Window object in this JavaScript?
在这里做了一个完整的噩梦,努力向自己解释为什么this
是window
对象?
(function () {
function get () {
alert(this);
}
get();
})();
我的理解是函数在JS中创建范围,为什么这指的是window
对象?
因为这是
JavaScript的工作方式,除非严格模式。
this
window
,除非您在其他对象上显式调用方法。您发布的代码get
在没有显式this
的情况下被调用,因此在 window
上调用。
x.method() // "this" will be "x"
method() // "this" will be "window"
在 Javascript 中确定this
的规则
按优先级顺序:
- 该函数用
new
调用,例如var a = new method()
,导致this
成为一个新的空对象。 - 该函数使用特定的上下文显式调用,使用
call
、apply
或bind
,导致this
成为所使用的上下文(例如method.call(y)
会导致this
被y
- 函数由对象调用,导致函数的上下文成为调用对象(例如
x.method()
会导致this
被x
( - 在非严格模式下,如果不满足其他任何规则,则
this
默认为全局对象。 在严格模式下,this
将是未定义的。
相关文章:
- javascript中的数组出错
- JavaScript中的函数和对象之间没有区别吗?
- Javascript中的空白是什么
- 为什么要使用0>javascript中的0
- 如何制作简单的php'在Javascript中的foreach等价物
- javascript中的布尔条件
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 验证Javascript中的Textarea
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 仅在IE中,javascript中的时区名称不正确
- JavaScript 中的嵌套函数和 “this” 关键字
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- JavaScript 中的高阶函数
- Javascript中的备选注释方法
- 如何使用JavaScript中的用户输入创建序列/序列
- 无法理解JavaScript中的静态方法
- 如何附加'#'到Javascript中的值
- javascript 中的全局函数
- 用javascript中的param执行动态函数