Javascript的this指向

138 阅读1分钟

在Javascript中this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定,this最终指向调用它的对象。总结一句,就是函数的调用方式决定了this指向

调用方式

普通函数调用

作为方法来调用

作为构造函数来调用

使用apply/call/bind方法来调用

一,普通函数调用

var name = "window"
function person(){
   var name = "person"
    console.log(this.name);
}
person();  //输出  window

 person作为window的方法来调用,this指向调用者window,所以this.name = "window" 二,作为方法来调用

var name = "window"
var person = {
    name:"person",
    showName:function(){
	 console.log(this.name)	
	}
}
var person2 = {
   name:"person2",
   showName2:person.showName      
}
var showName3 = person.showName

person.showName();  //输出  person
person2.showName2(); //输出 person2  虽然showName方法是在person这个对象中定义,但是调用的时候却是在person2这个对象中调用,因此this指向person2
showName3();         //输出 window   同理

  

   三,作为构造函数来调用

构造函数与普通函数的区别就是,构造函数的目的是用来构造对象的,构造对象的方式就是使用new 关键字 ,如何通过构造函数给对象添加属性?就是使用this关键字,所以构造函数中的this指向的是它实例化的对象

  

 function person(){
   this.sex='female';
   this.age=''20'
   };
   var xiaoming=new person();//js在执行到此条语句时,将this的引用指向了xiaoming
   console.log(xiaoming.age),//执行结果 20

  四,使用apply/call/bind方法来调用 

apply/call/bind方法能改变this关键字的指向,但还是谁调用this指向谁

  原文地址:www.cnblogs.com/cuijinlin/p…

景秀教育