js之函数中的this指向

  1. 普通模式调用函数,函数中的this是window。
function a(){
    var user = "b";
    console.log(this); //Window
}
a();
  1. 如果是通过new的方式,函数中的this就是当前的实例对象。
function Fn(){
    this.user = "张三";
}
var a = new Fn();
console.log(a.user); //张三
  1. 对象中的方法,里面的this还是当前实例对象。
var o = {
      user: "李四",
      fn: function () {
            console.log(this.user);//李四
      }
}
o.fn();
  1. 全局函数apply和call可以用来改变this的指向
var fun = function(str) {
 this.status = str;
}
fun.prototype.getStatus = function() {
 alert(this.status);
}
var obj = {
 status: "loading"
};
fun.prototype.getStatus.apply(obj); // 输出"loading", 此时getStatus方法中的this指向了obj

补充一点:在严格模式(use strict;)中的默认的this不再是window,而是undefined。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. this之谜 在JavaScript中,this是当前执行函数的上下文。因为JavaScript有4种不同的...
    百里少龙阅读 4,617评论 0 3
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,096评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,449评论 0 4
  • 今天周五,下班前跟老大确认了,今天晚上周末都不用加班,于是乎,约了朋友一起看电影~ 跟朋友约好时间地点后,老大突然...
    爱哭包阅读 1,410评论 1 0
  • 老朋友: 我很没脸给你写这封信,因为我对你有愧。首先我必须承认我辜负了你对我的期望,我记得你曾对我说:“未...
    与心同约阅读 3,405评论 0 0