javascript中的'this'
最近工作和看书时遇到了很多js中'this',觉得有必要梳理一下。
1.在全局作用域中使用时,this就指向全局对象window。
var name='aaa'; alert(this.name); //aaa alert(window.name); //aaa alert(this===window); //true
2.当在全局作用域中定义一个函数,在函数中使用this,此时函数执行的环境对象是全局对象window,所以this也指向window。
var name='aaa'; function sayName(){alert(this.name); //aaaalert(window.name); //aaaalert(this===window); //true } sayName();
3.当然也可以通过函数的apply或call方法将函数中的this指向其他的作用域(环境对象)。
var obj={name:'bbb'} var name='aaa'; function sayName(){alert(this.name); //bbbalert(this===window); //falsealert(this===obj); //true } sayName.apply(obj);
当改变了sayName的作用域时,this对象也跟着指向了sayName的作用域obj,所以此时this指向obj。
4.当函数作为构造函数使用时,在构造函数中使用this,则this指向的是通过构造函数创建出来的新的对象。
function Student(name){this.name=name; } var stu1=new Student('abc');alert(stu1.name); //abc
使用构造函数创建对象时,首先会创建一个新的对象,然后会将构造函数的作用域赋给新对象,因此this就指向了新的对象。
5.当函数作为一个对象的方法时,在函数中使用this,此时this指向了这个对象。
var Student={name:'abc',sayName:function(){alert(this.name); //abcalert(this===Student); //true } } Student.sayName();
6.当在对象的方法中调用嵌套方法时,this指向全局对象(非严格模式)或undefined(严格模式)
var o={fun:function(){console.log(this===o); //true f();function f(){console.log(this===o); //falseconsole.log(this===window); //true }}}
嵌套的函数不会从调用它的函数中继承this.
总结:this引用的是函数据已执行的环境对象。
转载于:https://www.cnblogs.com/Tzhibin/p/4322202.html
javascript中的'this'相关推荐
- 浅析 JavaScript 中的 函数 uncurrying 反柯里化
柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...
- JavaScript中,this的绑定规则
对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点. 比如下面的代码,this 指向就有三种方式. 在<你不知道的 JavaScript>一书中,我总算比较清 ...
- Javascript中undefined,NaN等特殊比较
以下内容转自: http://blog.csdn.net/hongweigg/article/details/38090093 1.问题:在Javascript中,typeof(undefined) ...
- Javascript中二进制数据处理方法
Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html
- JavaScript 中的有限状态机
http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机 Page navigation 系列文章 有限状态 ...
- 在Javascript中使用面向对象的编程
by Mike Koss March 26th, 2003 这是一篇,我个人认为最好的,Javascript面向对象编程的文章.翻译不好的地方,还望大家指正,谢谢. 如果您需要,可以访问下面的地址取得 ...
- 取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...
统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用.URL指定资源位置和检索资源的机制(http,ftp,mailto). 例如,这是此博客文章的URL: 通常,您需要访问URL的特 ...
- 在javascript中判断类型
String 一个字符串始终是一个字符串,所以这一块是很容易.除非使用new(new String)调用,否则typeof将返回"object".所以也要包含那些可以使用的字符串i ...
- JavaScript中几个重要的知识点(1) ---- 面向对象
JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象.面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 ...
- javascript中实例方法与类方法的区别
在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问,不需要声明类的实例来 ...
最新文章
- NB-IoT,你真是太让我失望了
- 机器算法有哪几种 python_8种顶级Python机器学习算法-你必须学习
- 这位 50 岁的海归程序员,当着老板还在天天改 Bug
- python写透视挂_python opencv 透视变换
- IDEA给项目添加lib/jar
- WEB服务器Nginx WINDOWS最简部署
- 用C语言求解合式公式的主合取范式和主析取范式
- c# chart 各个属性_C# Chart各个属性详细解析、应用
- AAEGan 简介与代码实战
- linux编译firefox,linux安装firefox
- 常用Java工具类:java抽奖码生成
- 哥尼斯堡七桥问题用计算机,哥尼斯堡七桥问题解法真的解不出来?请尽快解答.急...
- c语言自动安装打印机驱动,安装自定义的即插即用打印机驱动程序
- 广西大学计算机考研资料汇总
- 【2019 CSP-JのT4】[洛谷P5663]加工零件【最短路 · 变式】
- 基于Matlab的火灾预警系统
- 小程序springboot食堂预约订餐系统毕业设计-附源码221554
- Java 后端工程师 2018 书单推荐
- 实证论文复刻|stata安慰剂检验
- 百人计划 图形1.4 PC手机图形API介绍
热门文章
- 什么叫百度下拉框?除了百度下拉还有哪些下拉词框可以优化?
- stdmove 跟 左键引用 区别_C++ auto和decltype的区别
- java jodd_Jodd :一款优雅的 Java 工具集
- 名为 cursor_jinserted 的游标不存在_一个工程师必须了解的测量常识,你不知道怎么行...
- 十八年开发经验分享(四)问题解决篇(下)
- android 中 FLAG_SHOW_WHEN_LOCKED 的用法及解释
- python搭建网页_使用python快速搭建本地网站
- window直接运行不需要环境的软件是什么语言开发的_C语言为何不会过时?你需要掌握多少种语言?_C 语言...
- AjaxControlToolKit插件tabContainer在IIS7以上版本部署后自动添加visibility:hidden属性 问题的解决方案...
- 心跳脑裂解决方案之Heartbeat的Stonith配置