this硬绑定】的更多相关文章

一.this显示绑定 this显示绑定,顾名思义,它有别于this的隐式绑定,而隐式绑定必须要求一个对象内部包含一个指向某个函数的属性(或者某个对象或者上下文包含一个函数调用位置),并通过这个属性间接调用这个函数,从而把this简介/隐式绑定到这个对象上.但是this的隐式绑定存在一个绑定对象丢失问题,如下面代码所示: function afun() { console.log(this.a); } var obj = { a: 1, afun: afun }; var a = "hello&q…
× 目录 [1]默认绑定 [2]隐式绑定 [3]隐式丢失[4]显式绑定[5]new绑定[6]严格模式 前面的话 如果要问javascript中哪两个知识点容易混淆,作用域查询和this机制绝对名列前茅.前面的作用域系列已经详细介绍过作用域的知识.本系列开始将介绍javascript的另一大山脉——this机制.本文是该系列的第一篇——this的4种绑定规则 默认绑定 全局环境中,this默认绑定到window console.log(this === window);//true 函数独立调用时…
人们对于this的绑定常常有两个误解,一:指向函数本身,二:指向函数作用域.这两种想法都是错的,this并不指向函数本身,也不指向函数作用域. function foo(){ this.count++; } foo.count = 0; for(var i = 0 ; i<5 ; i++){ foo(); } alert( foo.count ); 因为this不指向函数本身,所以foo.count的值依然是0. function foo(){ var a = 1 ; alert(this.a)…
在理解this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的位置).只有仔细分析调用位置才能回答这个问题:这个this 到底引用的是什么?通常来说,寻找调用位置就是寻找“函数被调用的位置”,但是做起来并没有这么简单,因为某些编程模式可能会隐藏真正的调用位置.最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数).我们关心的调用位置就在当前正在执行的函数的前一个调用中.下面我们来看看到底什么是调用栈和调用位置: function baz() {…
这里是<你不知道的JS>中常见的this绑定种类分享: 1)默认绑定: function foo(){ console.log(this.a); } var a = 2; foo(); 解析:foo()是直接使用不带任何修饰的函数引用进行调用的,因此只能使用默认绑定,this指向全局对象 注意:严格模式下与foo()的调用位置无关:引擎会抛出TypeError: this is undefined的异常 2)隐式绑定: function foo(){ console.log(this.a);…
目录 this的默认绑定 this的隐式绑定 隐式绑定下,作为对象属性的函数,对于对象来说是独立的 在一串对象属性链中,this绑定的是最内层的对象 this的显式绑定:(call和bind方法) new绑定 正文    javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this   一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最核心的一点--函数中的this总指向调用它的对象,接下来的故事都将围绕这一点展开  …
一 , this的默认绑定 当一个函数没有明确的调用对象的时候,也就是单纯作为独立函数调用的时候,将对函数的this使用默认绑定:绑定到全局的window对象. 一个例子 function fire () { // 我是被定义在函数内部的函数哦! function innerFire() { console.log(this === window) } innerFire(); // 独立函数调用 } fire(); // 输出true //即使函数innerFire是包含在函数fire里面的,…
2.this的绑定规则 1.默认绑定 function foo( ) { console.log(this.a); } var a=1; foo(); 在代码中,foo()函数不带任何修饰的引用进行调用的,那么只能使用默认绑定. 2.隐式绑定 function foo1() { console.log( this.a ); } var obj = { a: 1, foo: foo1 }; obj.foo(); 调用位置使用obj上下文来引用函数foo2,故可以说函数被调用时obj对象“拥有”或“…
   javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this   一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最核心的一点——函数中的this总指向调用它的对象,接下来的故事都将围绕这一点展开   (提醒前排的筒子们准备好茶水和西瓜,我要开始讲故事啦!!)     [故事]有一个年轻人叫"迪斯"(this),有一天,迪斯不小心穿越到一个叫 “伽瓦斯克利”(javascript)的 异世界,此时此刻迪…
一.   this绑定规则 函数调用位置决定了this的绑定对象,必须找到正确的调用位置判断需要应用下面四条规则中的哪一条. 1.1 默认绑定 看下面代码: function foo() { console.log(this.a); } var a = 1; foo(); // 2 调用foo的时候,this应用了默认绑定,this指向了全局对象,但是在严格模式下,那么全局对象将无法进行默认绑定,因此this会绑定到undefined function foo() { 'use strict';…