美文网首页
对JS中this的理解

对JS中this的理解

作者: dudu_du | 来源:发表于2018-11-01 08:45 被阅读0次

开始

在JS中,this的指向是由函数调用时的位置来决定的。那函数执行时是怎样决定this的绑定对象的呢?首先我们先要分析this的调用栈,我们所关心的调用位置就是当前正在执行的函数的前一个调用,找到调用位置以后,再根据以下实际情况判断this的指向。

  1. 默认绑定
function foo() {
  console.log(this.a)
}
var a = 1
foo() // 1

这段代码里,this.a被解析为window.a,因为foo是直接调用而没有任何修饰的函数引用,所以只能使用默认绑定.
注意:当函数体内设置为严格模式时,foo无法绑定到window.

  1. 隐式绑定
    该情况要考虑是否由上下文对象,或者被对象包含
function foo(){
  console.log(this.a)
}
var obj = {
  a: 'obj',
  foo: foo
}
obj.foo() // obj

注意:对象属性引用链中只有最顶层或者说最后一层会影响调用位置

function foo() { 
  console.log( this.a ); 
}
var obj = {
  a: '2',
  obj1: obj1,
}
var obj1 = {
  a: 42,
  foo: foo
}
obj.obj1.foo() // 42

相关文章

  • 对JS中this的理解

    开始 在JS中,this的指向是由函数调用时的位置来决定的。那函数执行时是怎样决定this的绑定对象的呢?首先我们...

  • JavaScript高级程序设计——原型和原型链

    前言 此文章为加深对JS中重要概念进行理解,不建议没有任何JS基础的人看,只为加深对概念理解通过实际的例子,而不是...

  • 理解js中的this

    js中的this,取决于函数的调用方式。 在作为普通函数调用时(类似:fn()),this指向全局或者undefi...

  • 理解js中的this

    javascript中的this……简直了!仿佛每次见到都会变个样儿~上下文不同,是否严格模式,等等,this值都...

  • JavaScript中的prototype理解

    JS中的prototype理解

  • 对JS原型的理解

    对原型的理解,原型其实是一个对象,当构造一个函数的时候,函数会有一个prototype属性,这个属性就是一个地址指...

  • object深度解析

    我们知道JS是面对对象的编程语言,但其实很多人对JS中的对象没有足够的理解。这次我们从ES规范入手,深入的理解ob...

  • JavaScript中对像的属性

    在JavaScript中,对象是属性的无序集合,通过对JS属性的理解可以更好地了解JS对象。 属性的构成与分类 在...

  • 对js中call和apply的理解(一)

    从这里可以看出,其实call或者apply都是为了动态改变this指针而出现的child本身没有say()方法,却...

  • 携程面试总结

    1.对js闭包的理解2.对原型的理解3.js怎么实现继承4.js怎么实现私有变量5.angular的双向绑定实现6...

网友评论

      本文标题:对JS中this的理解

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