js中this指向问题一直是个坑,之前一直是懵懵懂懂的,大概知道一点,但一直不知道各种情况下指向有什么区别,今天亲自动手测试了下this的指向。
1.在对象中的this
对象中的this指向我们创建的对象,例如:

var obj ={ccc : 1122,ddd : 2233,ded : function(){console.log(this);}  ,fff : function(){console.log(this === obj );}
}
obj.ded();
obj.fff();

在chrome中执行的答案如下:

上图我们可以看出我们执行obj对象下的ded函数时,打印出来的事Object对象里面的所有属性,展示这个对象

可以看到obj对象包含的方法和属性都包含在this对象下面,再运行fff函数,把this和obj对象进行比较,可以看出这两个是恒等的,所以在对象里的this指向这个对象。

2.直接调用函数时的this指向
先创建一个函数:

function main(){this.aad = 234;console.log(this);
}
main();

运行效果如下:

可以看到我们打印出来的this对象指向全局变量window,而创建的aad变量直接包含在了window对象下面了,所以直接调用函数时this是指向window对象的。

3.构造函数中的this指向
当我们创建一个构造函数时,并且实例化一个对象时,this的指向哪里呢?先创建一个函数

function main(){this.aad = 234;this.def = function(){console.log(this);};this.foo = function(){console.log(this === xxx);};this.xoo = function(){console.log(this === main);};
}
var xxx = new main();
xxx.def();
xxx.foo();
xxx.xoo();

可以看出xxx.def函数还是指向main函数,但这只是把上下文给打印出来了,但当我们打印this与构造函数以及实现对象比较时就可以看出区别了,与构造函数main比较出来的值是false;与xxx函数比较时显示是true,所以构造函数this事指向当前实例化对象的。

这就是我关于this学习的总结,希望能给需要的人点帮助,然后有啥不足希望有大神能指点出来。

关于js中this指向的总结相关推荐

  1. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

    前  言 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面 ...

  2. 关于js中this指向复习

    简单说this指向 谁调用指向谁 1.对象.方法() 中,方法中的this指向的就是对象 2.普通函数中的 this 指向window,这是因为 window 是JS中的顶级对象,可以通过window ...

  3. JS中this指向问题

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  4. 前端学习辑录(2):JS中this指向的问题

    目录 this指向的不同场景: 一.普通函数调用 二.定时器函数 三.构造函数调用 四.对象方法调用 五.原型对象调用 总结 this指向的不同场景: 一.普通函数调用 普通函数中的this是谁?== ...

  5. js中this指向问题总结

    1. 默认绑定规则 (1) 全局作用下 this指向window console.log(this); (2) 函数独立调用下 this指向window function test(){ consol ...

  6. js中this指向是什么以及指向谁

    首先window是浏览器中最大的对象,所有的对象都在window中,在使用时可以省略 全局环境中的this指向window对象 我们声明的变量,最后都会变成window对象的属性 我们声明的函数,最后 ...

  7. 彻底理解js中this的指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  8. js中修改this的指向方法整理

    JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...

  9. 随笔——js中的this指向,apply()与 call()

    js中apply和Math.max()函数(原文) apply() Function.apply() 是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解: ...

  10. 理解js中的this指向以及call,apply,bind方法

    <script> function a(){var user = "追梦子";console.log(this.user); //undefinedconsole.lo ...

最新文章

  1. ADPLUS使用配置文件设置断点时无法创建DUMP文件原因分析
  2. nginx安装(正式)
  3. 如何用计算机加出5281314,电脑每次开机进入桌面后都黑屏两次,然后就好了,什么情况?怎么处理...
  4. Eclipse reports rendering library more recent than
  5. deepin v20.4设置全局搜索的快捷键
  6. PAT_B_1008_Java(20分)
  7. nlp2-数学基础(信息论,概率论、词义消歧)
  8. oracle集群数据库事务配置,在 .NET中使用Oracle数据库事务-安装配置-Oracle频道-中国IT实验室...
  9. 20行 Python 代码爬取王者荣耀全英雄皮肤 | 原力计划
  10. python12306抢票_Python实例--12306的抢票功能
  11. matlab将数据集分成训练集和测试集,如何将数据分成训练集和测试集?
  12. 要做好云计算所需要的成本,主要分为哪六大成本?
  13. 科大讯飞语音转写以及语音合成配置+遇到问题处理
  14. 多维正态随机变量的条件概率密度函数推导
  15. 树莓派+摄像头实现监控功能
  16. 第8周编程题在线测试
  17. 手机与存储卡空间大小剩余怎么获取
  18. linux系统下修改hosts文件的权限
  19. 用安卓手机给电脑当摄像头[DroidCam]
  20. Spring 增强处理Advice

热门文章

  1. C++线程中packaged_tack
  2. hdu-5656 CA Loves GCD(dp+数论)
  3. iOS 算法的前世今生:算法原理、常用算法(二)加密算法
  4. 035 spring amqp
  5. P2420 让我们异或吧 (树链剖分,异或前缀和)
  6. React Mixin
  7. codeforces776D
  8. 视图控制器的View创建方式
  9. 纯CSS3技术 加载中
  10. android 常用代码