JavaScript中的这个/电话/应用/绑定怎么用

  介绍

小编给大家分享一下JavaScript中的这个/电话/应用/绑定怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>一,这

<强> 1。什么是这个

这关键字在大部分语言中都是一个重要的存在,JS中自然不例外,其表达的意义丰富多样甚至有些复杂,深刻理解这是学习JS,面向对象编程非常重要的一环。

<强> 2。这代表什么

这代表函数(方)法执行的上下文环境(上下文,类似与你要了解一篇文章,了解文章的上下文你才能清晰的了解各种关系)。

但在JavaScript中这种不是固定不变的,它会随着执行环境的改变而改变。

1。在方法中,这个表示该方法所属的对象。

2。如果单独使用,这个表示全局对象。

3。在函数中,这个表示全局对象。

4。在函数中,在严格模式下,这是未定义的(未定义)。

5。在事件中,这个表示接收事件的元素。

6。类似调用()和应用()方法可以将这引用到任何对象。

<强> 3。绑定这个的方法

这样的动态切换,固然为JavaScript创造了巨大的灵活性,但也使得编程变得困难和模糊。有时,需要把这固定下来,避免出现意想不到的情况.JavaScript提供了电话,运用,结合这三个方法,来切换/固定这样的指向。

<强> 4.的指向

1。在一般函数方法中使用这个指代全局对象

function 测试(){   this.x =, 1,,//这里这就是窗口   console.log (this.x);   }   测试(),,//,1

JS规定,函数中的这一点,在函数被调用时确定,它指函数当前运行的环境。

2。作为对象方法调用,这指代上级对象

var  x =3;   function 测试(){   警报(this.x);   }   var  o =, {   ,x: 1,   ,m: test    };   o.m ();,//, 1

如果函数作为对象的方法时,方法中这指的向该对象。

3。作为构造函数调用,这指代新出的对象

function 测试(){   console.log(这个);   }   var  o =, new 测试();   ,,,()测试;//可以看出o代表的不是全局对象

新关键词的作用是调用某个函数并拿到其中的返回值,只是调用过程稍特殊。在上面的代码实例中test函数被新关键词调用时,内部依次执行了以下步骤:

(1)创建一个空对象。

(2)将这个空对象的原型,指向这个构造函数的原型。

(3)将空对象的值赋给函数内部的这个(这就是个空对象了)。

(4)执行函数体代码,为这这个对象绑定键值对。

(5)返回,将其作为新关键词调用oop函数的返回值。

所以构造函数中的,依旧是在构造函数被新关键词调用时确定其指向,指向的是当前被实例化的那个对象。

<强> 4。箭头函数中的这个

箭头函数是ES6的新特性,最重要的特点是它会捕获其所在上下文的这作为自己的,或者说,箭头函数本身并没有这个,它会沿用外部环境的。也就是说,箭头函数内部与其外部的这是保持一致的。

this.a=20   var 测试={   答:40岁才能   初始化才能:()=祝辞{   ,,,console.log (this.a)   ,,,function 去(){   ,,,,,this.a=60   ,,,,,console.log (this.a)   ,,,}   ,,go.prototype.a=50   ,,,return 走   ,,},   }      var  p=test.init ()   (页)   new  (test.init () ()//输出,20岁,60岁,60岁,60

<强> 5。改变指向

这样的动态切换,固然为JavaScript创造了巨大的灵活性,但也使得编程变得困难和模糊。有时,需要把这固定下来,避免出现意想不到的情况.JavaScript提供了电话,运用,结合这三个方法,来切换/固定这样的指向。

绑定方法和应用,叫稍有不同,绑定方法返回一个新函数,以后调用了才会执行,但申请,调用会立即执行。

<强>二、bind()

bind()方法主要就是将函数绑定到某个对象,绑定()会创建一个函数,函数体内的这对象的值会被绑定到传入bind()中的第一个参数的值,例如:f.bind (obj),实际上可以理解为obj.f(),这时f函数体内的这种自然指向的是obj;

示例:

function  f (y, z) {   return 才能;this.x  +, y  +, z;   }   var  m =, f.bind ({x : 1},, 2);   console.log (m (3));//6

JavaScript中的这个/电话/应用/绑定怎么用