博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的“this”
阅读量:6442 次
发布时间:2019-06-23

本文共 1051 字,大约阅读时间需要 3 分钟。

JavaScript有自己的一套this机制,在不同情况下,this的指向也不尽相同。

 

范围                    

1 console.log(this); //全局变量

 

全局范围使用this指向的是全局变量,浏览器环境下就是window。

注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined。

函数调用中                  

1 function foo() {
3 console.log(this); 5 } 6 9 foo(); //全局变量

函数调用中的this也指向全局变量。

注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined。

对象方法调用

1 var test = {
2 foo: function () {
3 console.log(this); 4 } 5 } 6 7 test.foo(); //test对象

对象方法调用中,this指向调用者。

1 var test = {
2 foo: function () {
3 console.log(this); 4 } 5 } 6 7 var test2 = test.foo; 8 test2(); //全局变量

不过由于this的晚绑定特性,在上例的情况中this将指向全局变量,相当于直接调用函数。

这点非常重要,同样的代码段,只有在运行时才能确定this指向

构造函数

1 function Foo() {
2 console.log(this); 3 } 4 5 new Foo(); //新创建的对象 6 console.log(foo);

在构造函数内部,this指向新创建的对象。

显式设置this

1 function foo(a, b) {
2 console.log(this); 3 } 4 5 var bar = {}; 6 7 foo.apply(bar, [1, 2]); //bar 8 foo.call(1, 2); //Number对象

使用Function.prototype的call或者apply方法是,函数内部this会被设置为传入的第一个参数

转载于:https://www.cnblogs.com/betarabbit/archive/2011/09/08/2171290.html

你可能感兴趣的文章
速览新特性--react✈️16.0=>16.6
查看>>
996工作制该取消吗?
查看>>
“六一”儿童节就要到了,赶快为喜欢的ta下场星星雨吧~
查看>>
SpringMVC入门学习---文件上传
查看>>
前端工程化,你做了多少?
查看>>
安卓进阶指南Annotation总结篇(一)
查看>>
设计模式-策略模式(strategy pattern)
查看>>
如何复用使用store的Vue业务组件
查看>>
小程序搜索自定义关键词功能关闭意欲何为?
查看>>
iOS UICollectionViewCell的一种布局
查看>>
iOS11 刷新TableView上下跳动
查看>>
函数节流
查看>>
node 你到底懂多少,等你,来~~
查看>>
你不懂js系列学习笔记-this与对象原型- 03
查看>>
搭建react项目常用依赖
查看>>
Spring Security Oauth2 认证(获取token/刷新token)流程(password模式)
查看>>
详解 Json Web Token (如何为Flutter开发一个简单的JWT解析库)
查看>>
IntelliJ IDEA实用配置指南
查看>>
测试1
查看>>
一名2018年应届生的美团前端校招面试之旅
查看>>