This的指向大致能够分为下面四类。我们分别举例说明

1. 作为对象的方法调用时。this指向该对象

var obj={

    a:1,

    getA:function(){

       console.log( this==obj); //输出true

       console.log(this.a);    //输出1

    }

}

obj.getA();

2. 作为普通函数调用时,this总是指向全局对象,比方说在浏览器中,这个全局对象是window。

window.name="windowname";

var getName=function(){

return this.name;

}

console.log(getName());  //输出windwoname

或者

window.name='windowname2';

var myObject={

name:'yourName',

getName:function(){

return this.name;

}

}

var getName=myObject.getName;

console.log(getName());    //windowname

console.log(myObject.getName());//yourName

3. 作为构造器调用

通常情况下,构造器里的this就指向返回的这个对象。比如:

var myClass=function(){

this.name='yourName';

}

var obj=new myClass();

console.log(obj.name);  //输出yourName

可是当new调用构造器时。构造器显示的返回了一个object类型的对象。那么此次运算的终于结果会返回这个对象,不是我们之前期待的this。

假设返回的不是对象是别的比方说string类型的数据,就还是指向原来的this

var myClass=function(){

this.name='yourName';

return  ’returnName’ ;

}

var obj=new myClass();

console.log(obj.name);  //输出'yourName'

4. Function.prototype.call 或 Function.prototype.apply调用能够动态的改变传入的this的值

var obj1={

name:'name1',

getName:function(){

return this.name;

}

}

var obj2={

name:'name2'

}

console.log(obj1.getName());  //输出name1

console.log(obj1.getName().call(obj2)); /输出name2

至此 第一篇博客写完了。 本文中,我们讲了对thiskeyword做了一些简单的分析。也參考了一些书。在此。对他们表示感谢,假设可以帮助到你。我感到万分荣幸。

让大家见笑了

浅谈javascript的this指向的更多相关文章

  1. 浅谈JavaScript中的闭包

    浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: functio ...

  2. 浅谈javascript的原型及原型链

    浅谈javascript的原型及原型链 这里,我们列出原型的几个概念,如下: prototype属性 [[prototype]] __proto__ prototype属性 只要创建了一个函数,就会为 ...

  3. 浅谈javascript函数节流

    浅谈javascript函数节流 什么是函数节流? 函数节流简单的来说就是不想让该函数在很短的时间内连续被调用,比如我们最常见的是窗口缩放的时候,经常会执行一些其他的操作函数,比如发一个ajax请求等 ...

  4. 浅谈JavaScript浮点数及其运算

    原文:浅谈JavaScript浮点数及其运算     JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题 ...

  5. 浅谈 JavaScript 编程语言的编码规范

    对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编 ...

  6. 浅谈JavaScript中的null和undefined

    浅谈JavaScript中的null和undefined null null是JavaScript中的关键字,表示一个特殊值,常用来描述"空值". 对null进行typeof类型运 ...

  7. 浅谈JavaScript中的正则表达式(适用初学者观看)

    浅谈JavaScript中的正则表达式 1.什么是正则表达式(RegExp)? 官方定义: 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去 ...

  8. [转载]浅谈JavaScript函数重载

     原文地址:浅谈JavaScript函数重载 作者:ChessZhang 上个星期四下午,接到了网易的视频面试(前端实习生第二轮技术面试).面了一个多小时,自我感觉面试得很糟糕的,因为问到的很多问题都 ...

  9. 浅谈JavaScript中的内存管理

    一门语言的内存存储方式是我们学习他必须要了解的,接下来让我浅谈一下自己对他的认识. 首先说,JavaScript中的变量包含两种两种类型: 1)值类型或基本类型:undefined.null.numb ...

随机推荐

  1. Queue 队列的用法

    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. 以下实例演示了队 ...

  2. Docker实践3: Docker常用命令(未完)

    查看容器及运行进程 docker ps 查看容器内部信息 docker inspect container_id 进入容器 docker attach container_id 退出容器 docker ...

  3. CentOS6.6下DRBD+HeartBeat+NFS配置

    一.DRBD配置 Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 我们可以理解为它其实就是 ...

  4. pl/sql中的record用法

    create or replace procedure pro1(v_in_empno in number) is --定义一个记录数据类型 type my_emp_record is record( ...

  5. HDU 4008 Parent and son LCA+树形dp

    题意: 给定case数 给定n个点的树,m个询问 以下n-1行给出树边 m个询问 x y 问:以x为根.y子树下 y的最小点标的儿子节点 和子孙节点 思路: 用son[u][0] 表示u的最小儿子 s ...

  6. 在基于or1200处理器的SoC上移植linux

    经历了前端的艰苦奋斗.SoC前端设计已经调试完毕,如今直接进入uboot移植   首先cd入u-boot-master 找到子文件夹include下得de2_115.h文件进行改动: (下一步计划:加 ...

  7. Axure——恢复以及备份功能从容面对意外

    1.      背景 近期刚刚接手java项目,在进行了为期一周的需求理解之后,对于最初的原型也開始做微小的调整,十一期的小伙伴们也积极地參与进来,这使得我们这个团队不断地在壮大和温馨. 眼看着原型即 ...

  8. oracle备份还原数据库

    首先到对应bin目录下打开cmd(windows),linux用相应终端链接:eg:D:\app\sun\product\11.2.0\dbhome_1\BIN 用户备份:exp u_tdms/p_t ...

  9. HTTP请求报文属性详解

    HTTP请求报文组成:请求行+请求头+请求体 注意:请求体和URL都可以传递请求参数. 常见请求头属性: 1.Accept  作用:浏览器客户端用来告诉服务端能接受什么类型的响应. 例如:  Acce ...

  10. mysql 函数substring_index() 截取字符串

    函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...