重点:在js中所有的代码都有其上下文环境,从面向对象的角度来说,就是一个对象必然是一个更大的对象的一部分。而你创建的这个对象,拥有它的外部对象会被他使用,以this指针的形式。但是现在有个问题,当方法从一个对象传递到另外一个对象的时候,它的外部环境发生改变,导致this会在运行时发生改变。正是因为this指针会被改变,所以需要用一个缓存的机制,来存储当前确定的这个this值。
if(!Function.prototype.bind){ Function.prototype.bind = function(obj){ var self = this; return function(){ return self.apply(obj); } }; }
var self = this; 把this的内容保存起来,这样this的值就是定义的时候的上下文环境。
一般函数里面嵌套函数的时候,会用到这种方式,以免this指定的上下文错误。
相关推荐
JavaScript 有一套完全不同于其它语言的对 this 的处理机制。 在五种不同的情况下 ,this 指向的各不相同。 有句话说得很在理 — 谁调用它,this就指向谁 一、全局范围内 在全局范围内使用this ,它将指向全局对象...
面向对象概念(对象封装,各种继承,闭包原理,this作用域等)介绍清晰易懂
全局执行上下文:只有一个,这是默认的,也是基础的执行上下文.(不在任何函数中的代码都是全局执行上下文)他有两个作用,一个是创建了全局变量,也就是指向window下的变量,另一个是将this的指向全局. 函数执行上下文:有...
js代码-this的指向(模拟1):全局上下文的形式
本文实例讲述了javascript执行上下文、变量对象。分享给大家供大家参考,具体如下: 突然看到一篇远在2010年的老文,作者以章节的形式向我们介绍了ECMA-262-3的部分内容,主要涉及到执行上下文、变量对象、作用域、...
主要介绍了Javascript中的作用域和上下文深入理解,本文讲解了作用域 VS 上下文、变量作用域、“this”上下文、执行上下文(Execution Context)、作用域链等内容,需要的朋友可以参考下
1.通过函数的call法设置 1.通过函数的call法设置 2.通过对象调法设置 2.通过对象调法设置 3.通过构造函数中设置 3.通过构造函数中设
函数调用的时候会创建上下文,this 是组成上下文的一部分。因此每次函数被调用都会产生新的this,既this的值就是调用当前函数的对象。 2.作为普通函数在全局作用域中被使用 在全局作用域当中,this 永远指向 ...
全局执行上下文:全局执行上下文指的是全局 this 指向的 window ,可以是外部加载的 JS 文件 或者本地 <scripe></script> 标签中的代码。 函数执行上下文:函数上下文也称为局部上下文,每个函数被调用的时候,都会...
Javascript中this关键字通常指向当前函数的拥有者。在javascript中通常把这个拥有者叫做执行上下文。
当你在代码中使用了 this,这个 this 的值就直接从执行的上下文中获取了,而不会从作用域链中搜寻。 关于 this 的取值,大体上可以分为以下几种情况: 情况一:全局 & 调用普通函数 在全局环境中,this 永远指向 ...
d3-上下文菜单这是 d3.js 的插件,允许您在可视化中轻松使用上下文菜单。 它 100% 基于 d3 并以“d3 方式”完成,因此您无需担心包含其他框架。 它被编写为非常轻巧且可定制。 你可以在这里看到它的实际效果:使用 ...
定义执行上下文:运行JavaScript函数时,它们具有关联JavaScript Object ,并且可以通过关键字this来访问它们。 this :在函数内部, this是代表函数执行上下文的Object call :这是调用函数的函数上的方法,就像()...
定义执行上下文:运行JavaScript函数时,它们具有关联JavaScript Object ,并且可以通过关键字this来访问它们。 this :在函数内部, this是代表函数执行上下文的Object call :这是调用函数的函数上的方法,就像()...
执行上下文:运行JavaScript函数时,它们具有关联JavaScript Object ,并且可以通过关键字this来访问它们。 this :在函数内部, this是代表函数执行上下文的Object call :这是调用函数的函数上的方法,就像() 。...
定义执行上下文:运行JavaScript函数时,它们具有关联JavaScript Object ,并且可以通过关键字this来访问它们。 this :在函数内部, this是代表函数执行上下文的Object call :这是调用函数的函数上的方法,就像()...
本文介绍的是setTimeout函数,延迟执行函数...我们可以看到setTimeout,被延迟执行的函数,里面的this,指向的是全局作用域,也就是这个函数的上下文为全局上下文。 (2)在ES6的箭头函数中,setTimeout里面,如果执行