美文网首页
javaScript中的this

javaScript中的this

作者: 小m_up | 来源:发表于2017-02-10 13:54 被阅读22次

this是JavaScript中的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如:

function  a(){
     this.x  = 1;
}

随着函数使用场合的不同,this的值会发生变化,所以要分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象。
this的使用一般有以下四种情况:

普通函数调用

普通函数调用属于全局性调用,this就代表了全局变量。
比如:

const x = 1;
function a(){
     console.log(this.x);
}
a(); // 输出为1

此时的this指的就是全局变量global,最后一句其实就等价于

window.a();//输出为1
对象的方法调用

在 JavaScript 中,函数也是对象,因此函数可以作为一个对象的属性,此时该函数被称为该对象的方法,在使用这种调用方式时,this 被自然绑定到该对象。

const a = { 
 x : 1,
 y : function(x) { 
     console.log(this.x);
     } 
 }; 
 a.y(0); // 输出1,this绑定到当前对象,即a对象

在这段代码中,function(x){}这个函数就是a对象的一个方法,所以此时的this就是a对象。

构造函数调用

JavaScript 支持面向对象式编程,与主流的面向对象式编程语言不同,JavaScript 并没有类的概念,而是使用原型继承方式。相应的,JavaScript 中的构造函数也很特殊,如果不使用 new 调用,则和普通函数一样。一般构造函数以大写字母开头,如果调用正确,this 绑定到新创建的对象上。

function a(){
  this.x = 1;
}
const b = new a();
console.log(b.x); //输出1
apply调用

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

const x = 0;
const a = { 
 x : 1,
 y : function() { 
     console.log(this.x);
     } 
 }; 
a.y.apply(); // 输出0

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。
若将给apply()传入参数,即

a.y.apply(a); // 输出1

则表明此时的this指的是对象a

相关文章

  • 1body中添加js

    1 中的 JavaScript JavaScript 函数和事件上面例子中的 JavaScript 语句,会...

  • JS中的类型转换

    JavaScript 中的类型转换 JavaScript 基本数据类型 JavaScript 中的一共有 8 中内...

  • js中的this

    javascript中的this javascript中的this与java中的this有点不同。ECMAScri...

  • JavaScript中的字符串

    @(javascript)[js字符串][toc] JavaScript中的字符串 字符串是JavaScript中...

  • 06-JavaScript数组和函数

    JavaScript数组 JavaScript中的数组可以存储不同类型的数据 JavaScript中的数组是引用类...

  • Client's JavaScript

    什么是JavaScript? JavaScript的运行环境? 浏览器中JavaScript可以做什么? 浏览器中...

  • javascript中的this

    一般说到JS的this,都会想起在函数中变来变去的this。但是事情的发生都是有规则的约束,JS中的this也不例...

  • JavaScript中的this

    什么是this? 首先对this的下个定义:this是在执行上下文创建时确定的一个在执行过程中不可更改的变量。th...

  • JavaScript中的this

    JavaScript中的this很容易让人迷惑,但弄清楚后其实还是很好区分的。JavaScript中的this总是...

  • javascript中的this

    在javascript中的this大致可以理解成谁调用的this就指向谁 全局环境中的this 函数中的this ...

网友评论

      本文标题:javaScript中的this

      本文链接:https://www.haomeiwen.com/subject/duqwittx.html