this关键字调用位置

调用位置就是函数在代码中被调用的位置(而不是声明位置)

寻找调用位置就差不多是寻找 函数被调用的位置

var v = 100;
//this经常被定义在函数的作用域中
function fn(){//默认绑定//this总是返回一个对象console.log(this.v);//这里的this指向的对象 要看这个函数是被什么调用的
}
fn(); //这样调用函数 那么在浏览器中this就是指的window  因为在浏览器中 fn();就是 window.fn(); window.可以省略
//但在NODE js中global是不可直接调用的//定义对象 把fn函数作为obj的方法
var obj = {v:200,f:fn//这是隐式绑定
}obj.fn();//在这里 this指向的对象是obj 因为是用obj.调用的fn  这里调用的fn是obj对象的方法 所有this指向的一定是obj
//这就体现了调用位置就是找函数被调用的位置console.log(this.v);//同理 在浏览器中是指向window对象 浏览器可以不写window.     默认绑定

this关键字的绑定

默认绑定

在一个函数体中使用this,当该函数被独立调用时。

(就是在函数被独立调用时,没有作为一个对象的方法式,this默认指向全局)

但在严格模式下 这样会报错

隐式绑定

需要考虑的是调用位置是否有上下文对象,或者说是否被某个对象拥有或者包含

隐式丢失是最常见的this绑定问题 也就是说本来是隐式绑定但是对象丢失了 变为了默认绑定

//定义全局变量
var v = 100;
//定义函数
function fn(){  //执行顺序 找到了fn()   到这 看看this指向哪里  this的指向取决于调用的位置 调用位置在fun()  fun()在全局  所以在浏览器环境 this指向window console.log(this.v);//默认绑定
}
//创建对象
var obj = {v:200,f:fn//隐式绑定    执行顺序 找到了obj.f的方法  找fn方法
}//定义一个全局变量,并把obj的f方法赋给fun
var fun = obj.f; //执行顺序   找到了定义体 找赋值的obj.f的方法//fun作为函数调用
fun();//执行顺序 第一步指向fun()  找他的定义体
//这就出现了访问丢失 因为本来是像用obj.f的this 但最后this只取决于调用的位置
显示绑定

就是明确在调用时,this所绑定的对象

JavaScript中用apply() 或 call() 方法实现

//定义全局变量
var v = 100;
//定义函数
function fn(){ console.log(this.v);
}
//创建对象
var obj = {v:200,f:fn
}var fun = obj.f;
fun.apply(obj);//直接规定this的指向 直接明确this指向

JavaScript的this关键字的调用位置和绑定相关推荐

  1. 深入解析Javascript中this关键字的使用

    深入解析Javascript中面向对象编程中的this关键字 在Javascript中this关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function TestFun ...

  2. javascript:this 关键字

    前言 看过[阮一峰]()的关于 this 的教程,讲了很多比较好的例子,但没有对其本质的东西解释清楚,而且部分例证存在问题:于是,打算重写本章节,从this的本质入手: 本文为作者的原创作品,转载需注 ...

  3. javascript关键字_让我们揭开JavaScript的“ new”关键字的神秘面纱

    javascript关键字 by Cynthia Lee 辛西娅·李(Cynthia Lee) 让我们揭开JavaScript的" new"关键字的神秘面纱 (Let's demy ...

  4. php中this的使用技巧,JavaScript中this关键字使用方法详解

    JavaScript中this关键字使用方法详解 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了 ...

  5. 深入理解Javascript之this关键字

    http://www.laruence.com/2009/09/08/1076.html 08 Sep 09 深入理解Javascript之this关键字 作者: Laruence(   ) 本文地址 ...

  6. JavaScript中this关键字的使用比较

    JavaScript中this关键字的使用比较 this关键字在JavaScript中,用的不能说比较多,而是非常多.那么熟悉this关键字的各种用法则显得非常关键. this有时候就是我们经常说的上 ...

  7. java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解

    [Java教程]JavaScript函数的4种调用方法详解 0 2016-08-09 00:00:12 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C# ...

  8. JavaScript中函数四种调用模式

    目录 JS中函数的四种调用模式 函数调用模式 方法调用模式 构造器调用模式 上下文调用模式 JS中函数的四种调用模式 在函数的调用模式中感觉最大的区别就是: this指向 函数调用模式 即通过函数名直 ...

  9. java with关键字_[Java教程]javascript 里面 with 关键字

    [Java教程]javascript 里面 with 关键字 0 2016-02-18 11:00:02 1.with的基本概念 with语句的作用是将代码的作用域设置到一个特定的作用域中,目的是为了 ...

最新文章

  1. 树形结构在关系数据库中的设计
  2. 相机模型--A Theory of Catadioptric Image Formation
  3. 详谈jsp和servlet的区别
  4. pytorch tensor查找0_在PyTorch中Tensor的查找和筛选例子
  5. tensorflow 就该这么学--2
  6. 记录一个自动创建分区的脚本
  7. bzoj 4898: [Apio2017]商旅【Floyd+分数规划+二分】
  8. 阿里云自研新一代企业云数据库POLARDB背后的技术
  9. JSP开发环境配置问题解答
  10. python读取大文件太慢_强悍的Python读取大文件的解决方案
  11. PDFlib TET Crack,文本提取工具包
  12. windows winrar 指令_WINRAR 命令行语法
  13. 速记JVM内存模型和垃圾回收策略
  14. 中国黑客传说:游走在黑暗中的精灵
  15. 盗版xp成功验证成正版,享受正版增值服务!
  16. c++ QT 反走样
  17. 群控成为微商月入百万的神器
  18. 高光谱图像算法实习工程师面经
  19. 鸟与虫(四)pexels搜到的我都想要,
  20. 附录H-2 技术预研报告

热门文章

  1. YOLACT论文笔记
  2. 系统集成项目管理工程师教程第二版
  3. java中uri什么意思,java URI URL 个人理解。
  4. python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了
  5. jQuery ajax模板及各参数介绍
  6. 【LeetCode】图论 graph(共20题)
  7. 【咸鱼教程】置于后台停止计时,修改引擎源码解决。
  8. 五年26个版本:Linux系统内核全程回顾
  9. HTML5 Canvas 绘图
  10. postMessage解决跨域问题