浅谈JavaScript--this指向

Posted adoctors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈JavaScript--this指向相关的知识,希望对你有一定的参考价值。

js中this的值取决于调用的模式

  • 方法调用模式
var student={
    name:"adoctors",
    showThis:function(){
        console.log(this);          //此处this为整个student对象,包括其中的属性和方法
        console.log(this.name);   // ‘adoctors‘
    }
}
  • 函数调用模式
function fn(){
    console.log(this);   //this指向window对象
    
    var name = "adoctors";
    console.log(this.name);   //undefined
    
    //也可通过赋值变量改变this指向
    var that=this;
    ···
}
  • 构造器调用模式
var fn = function (status){
    this.status = status;
}
fn.prototype.get_status = function(){
    return this.status;
}
var test = new fn(‘my status‘);
console.log(test.get_status);   //my status,this指向test
 
  • apply和call调用模式
function foo(){
    console.log(this.fruit);
}
// 定义一个全局变量,等同于window.fruit = "banana";
var fruit = "banana";

var  o = {
    fruit : "apple"
};
    
foo.apply(window);  // "banana";
foo.call(o);  // "apple";

apply和call的唯一区别,就是在传参的时候,apply的参数需要放在一个数组里面,而call不需要;

以上是关于浅谈JavaScript--this指向的主要内容,如果未能解决你的问题,请参考以下文章

javascript:this指向

JavaScript this的指向问题

一分钟搞懂 JavaScript this 指向问题

图解 javascript this 指向

JavaScript this指向问题new的过程

JavaScript - this指向问题(建议收藏反复查看)