美文网首页VUE相关
javaScript函数中this的四种绑定形式

javaScript函数中this的四种绑定形式

作者: 伴歌知行 | 来源:发表于2020-06-08 15:09 被阅读0次

1、默认绑定

当一个函数没有明确的调用对象的时候,也就是单纯作为独立函数调用的时候,将对函数的this使用默认绑定:绑定到全局的window对象

function a () {
   console.log(this)
}
a(); // 输出window

2、隐式绑定

当函数引用有上下文对象时,函数调用中的this会绑定到这个上下文对象

function foo() {
  console.log(this.a)
}
let obj = {
  a: 2,
  foo: foo
}
obj.foo(); // 输出2

2.1、隐式丢失

直接调用引用的函数时,函数是没有上下文对象的,隐式绑定的this丢失了

function foo() {
  console.log(this.a)
}
let obj = {
  a: 2,
  foo: foo
}
let a = 3;            // a是全局对象的属性
let foo2 = obj.foo;   // 这里foo2将引用foo函数本身,所以不带有函数对象的上下文
foo2();               // 输出3

3、显示绑定

采用call()和apply(),通过传入一个对象(若为基本类型,会被封装函数转为对象—装箱),将this绑定到该对象

function foo() {
  console.log(this.a)
}
let obj = {
  a: 2,
  foo: foo
}
let a = 3;            // a是全局对象的属性
let foo2 = obj.foo;   // 这里foo2将引用foo函数本身,所以不带有函数对象的上下文
foo2();               // 输出3
foo2.call(obj);       // 输出2  
foo2.apply(obj);      // 输出2

使用bind也可以将this绑定到一个对象,但是bind不执行函数,只返回一个可供执行的函数

let b = foo2.bind(obj);  // 此时返回一个可供执行的函数
b();                     // 输出2

4、new绑定

任何函数都可能被用作构造函数,当函数被new操作符“构造调用”时,会执行下面操作:

  1. 创建一个新对象(若该函数不是JS内置的,则创建一个新的Object对象);
  2. 将this绑定到这个对象;
  3. 执行构造函数中的代码(为这个新对象添加属性);
  4. 若函数没有返回其他对象,则自动返回这个新对象;若函数有return返回的是非对象,则还是自动返回这个新对象,即覆盖那个非对象。
function foo (a) {
     this.a = a;
}
 
var a1  = new foo (1);
var a2  = new foo (2);
 
console.log(a1.a); // 输出1
console.log(a2.a); // 输出2

相关文章

  • javaScript函数中this的四种绑定形式

    1、默认绑定 当一个函数没有明确的调用对象的时候,也就是单纯作为独立函数调用的时候,将对函数的this使用默认绑定...

  • 【javascript】函数中的this的四种绑定形式

    正文 javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数...

  • javascript之this的使用

    JavaScript中this在对象中引用的四种形式:代码演示戳这里 1.无任何前缀的函数调用时,this指向顶层...

  • 如何正确的判断this? 箭头函数的this是什么?

    this的绑定规则有四种:默认绑定,隐式绑定,显式绑定,new绑定 。 函数是否在 new 中调用(new绑定),...

  • JS事件——绑定

    在DOM元素中直接绑定; 在JavaScript代码中绑定; 绑定事件监听函数。 事件监听 优点:常规的事件绑定只...

  • JavaScript中this的使用

    js中this的四种用法 参考博文JavaScript中this的四个绑定规则总结 在JavaScript中每一个...

  • this关键字

    JavaScript中this关键字的几点说明:****1.JavaScript中的this关键字绑定的内容跟函数...

  • javascript 事件绑定方式

    1.在DOM元素中直接绑定 2.在JavaScript代码中绑定 3.绑定事件监听函数 addEventListe...

  • this的绑定与丢失问题

    js中的this绑定与丢失 this指向调用的对象与函数声明的位置无关,只与调用位置有关 this 四种绑定 1、...

  • this全面解析

    1 定义 谁调用的函数,该函数的this就指向谁。 2 四种绑定规则 2.1 默认绑定,this指向全局对象,严格...

网友评论

    本文标题:javaScript函数中this的四种绑定形式

    本文链接:https://www.haomeiwen.com/subject/ctxltktx.html