码迷,mamicode.com
首页 > 编程语言 > 详细

浅谈JavaScript--this指向

时间:2018-03-04 21:19:52      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:define   status   函数   post   包括   参数   浅谈   efi   java   

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指向

标签:define   status   函数   post   包括   参数   浅谈   efi   java   

原文地址:https://www.cnblogs.com/adoctors/p/8505864.html

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