美文网首页
js中this指向问题

js中this指向问题

作者: 芒果加奶 | 来源:发表于2017-09-20 23:12 被阅读0次

this的指向在函数定义的时候是无法确定的,只有函数执行的时候才能确定this到底指向谁,实际this指向是调用他的对象。

1.栗子1

function a(){
    var user = "小莹莹";
    console.log(this.user);//undefined
    console.log(this);//window
}
a();
// 等同于windiw.a()实际为window调用,还有alert()方法也是window对象

2.栗子2

var obj = {
    user:"小莹莹",
    fn:function(){
        console.log(this.user);//小莹莹this指向是obj
    }
}
obj.fn();

3.栗子3

var obj = {
    a:10,
    b:{
        a:12,
        fn:function(){
            console.log(this.a);//12
        }
    }
}
o.b.fn();

4.栗子4

var obj = {
    a:10,
    b:{
        //a:12,
        fn:function(){
            console.log(this.a);//undefined
        }
    }
}
o.b.fn

当函数中包含多个对象时,this指向上一级的对象
5.栗子5

var obj = {
    a:10,
    b:{
        a:12,
        fn:function(){
            console.log(this.a);//undefined
            console.log(this);//window
        }
    }
}
var j = o.b.fn;//o.b.fn赋给j时没有执行,只有方法,这时this已经指向window
j();

总结:

  1. 当使用fn()或者定义新对象赋给fn方法 var j =o.fn,this指向是window,alert()方法调用时window
  2. 当对象直接调用方法时,obj.fn(),this指向当前调用的对象
  3. 当函数调用时包含多个对象的时候,this指向上一级的对象,没有上一级对象为undefined

相关文章

  • js中this指向问题

    this的指向在函数定义的时候是无法确定的,只有函数执行的时候才能确定this到底指向谁,实际this指向是调用他...

  • JS中this指向问题

    首先声明,添加删除线的都是不太确定的 下面我们分情况解释: 1、函数调用模式--当一个函数并非一个对象的属性时,那...

  • js中this指向问题?

    This是一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 this 是在函数被调用时确...

  • JS进阶篇-this指向问题

    JS中this的指向问题不同于其他语言,JS中的this不是指向定义它的位置,而是在哪里调用它就指向哪里。 JS中...

  • 关于js函数中this的指向的问题

    @(javascript)[JavaScript中this的指向] 关于js函数中this的指向的问题 javas...

  • js中this的指向问题

    this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分...

  • js 中 this 的指向问题

  • JS中this指向问题详解

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上...

  • JS中的this指向问题

    1. this的几种绑定方法 (1)普通函数中的this指向函数的调用点 (2) call明确绑定 (3)bind...

  • JS 中的 this指向问题

    程序员就是没有人情味的原始人,不懂交际。谈不到对象。每天就是查看a-z,0-9加上!@#¥%…/&()+-=/<>...

网友评论

      本文标题:js中this指向问题

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