小编给大家分享一下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));//6JavaScript中的这个/电话/应用/绑定怎么用