码迷,mamicode.com
首页 > Web开发 > 详细

关于js中this指向的简单理解(一)

时间:2021-06-02 14:36:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:对象   就是   执行函数   class   定义   col   var   情况   变量   

对于一下几种情况,我认为网上说的,谁调用就this就指向谁是可以解释的通的;甚至我觉得可以理解为适用于就近原则,意思就是谁最靠近调用这个函数的,那么this就指向谁;

ps:1.this在函数创建(定义)的时候是无法确定的,只有在调用的时候才可以确定;

  2.window是js中全局的变量,在我的理解中是最顶层的对象,在<script>.</script>最外层定义的函数与变量,其实都是在给window对象定义属性;

var a = 55
function fn(){
  var a = 3;
   console.log(this); // this -> window
  console.log(this.a); //55 
  console.log(a); // 3;      
}
fn(); // 此处是调用window调用fn();实际上是window.fn(); 
function fn(){
  var a = 3;
   console.log(this); // this -> window
  console.log(this.a); //undefined 因为this指向window,window对象中,并没有a这个属性,所以打印this.a 为undefined
  console.log(a); // 3;      
}
fn(); // 此处是调用window调用fn();实际上是window.fn(); 
var obj = {
  a: 66,
  fn: funciton(){
     var b = 45;
     console.log(this.a);  // 66调用fn()的是obj,因此this指向的是obj;在obj中存在a这个属性
  }  
}
obj.fn()
var obj = {
    a: 44,
    b: {
       a: 36,
       fn: function() {
         console.log(this.a); // 36 最靠近调用fn() 的是 b这个对象,b对象中的a属性的值是36
       }
    }

};
obj.b.fn();
var obj = {
    a: 44,
    b: {
      // a: 36,
       fn: function() {
         console.log(this.a); // undefined 最靠近调用fn() 的是 b这个对象,b对象中的不存在a这个属性
       }
    }
};
obj.b.fn();
var obj = {
    a: 44,
    b: {
      // a: 36,
       fn: function() {
         console.log(this.a); // undefined 最靠近调用fn() 的是 window这个对象,window对象中的不存在a这个属性
       }
    }
};
var j = obj.b.fn;  // 此处是把 obj.b 中的fn这个属性的值赋值给j这个变量,这个步骤中,实际上并没有执行函数;
j(); //此处执行fn函数,实际上市window.j()

 

关于js中this指向的简单理解(一)

标签:对象   就是   执行函数   class   定义   col   var   情况   变量   

原文地址:https://www.cnblogs.com/mamifeng/p/14822637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!