js中的this的调用(学习阮一峰老师)

JavaScript中this对象

  在js的函数中经常看到如下语句,不明白有什么作用。

function  person(name){

        this.name=name;

}

this对象是谁取决于函数被调用的方式,在JavaScript中,函数具有四种调用方式:

一、直接调用,此时函数中的this在ES3/ES5非严格模式下为全局对象,在浏览器中即为window

var x=1;

function test(){

        alert(this.x); 此时this为window

}

test(); //结果为1

二、某个对象的方法调用,这时this指这个上级对象

function test(){

        alert(this.x); //此时this指o

}

var o={};

o.x=1;

o.m=test;

o.m(); //输出为1

三、作为构造函数调用

  所谓构造函数,实际上就是通过这个函数生成一个新的对象,此时this就是指这个新对象

function test(){

     this.x=1;  //this为o

}
var o=new test();
alert(o.x); //输出为1

  为了表明this不是全局对象,对代码做如下调整:

var x=2;

function test(){

       this.x=1;

}

var o = new test();

alert(x); //结果为2,表面全局变量的x根本没有变

四、apply调用

  apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象,因此this指的就是这个第一个参数

var x=0;

function test(){

       alert(this.x);

}

var o = {};

o.x = 1;

o.m = test;

o.m.apply(); //结果为0

   apply()参数为空时,默认调用全局对象,所以这时的运行结果为0,此时,this为全局对象,如果最后一行改为

o.m.apply(o);  //结果为1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 5,623评论 0 6
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,396评论 2 17
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,729评论 0 4
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,528评论 1 10
  • 第一部分 准入训练 第1章 进入忍者世界 js开发人员通常使用js库来实现通用和可重用的功能。这些库需要简单易用,...
    如201608阅读 5,160评论 1 2

友情链接更多精彩内容