js各种场景下的this指针问题

平时大家在使用或浏览js代码时,都会碰到使用this关键字的情况,但是大家使用过程中会发现不同场景下this所起的作用是不同的,下面就各种场景下对this关键字进行解读

一.  当函数作为一个对象的方法时,在函数中使用this,此时this指向这个对象

var goods = { 

 name:'apple', 

 goodsName:function(){ 

     alert(this.name); // apple

     alert(this===Student); // true 

 }

}

goods.goodsName();

二.  当函数作为构造函数使用时,在构造函数中使用this,则this指向的是通过构造函数创建出来的新的对象。

function goods(name){ 

    this.name=name;

}

var goods1=new goods('apple');

alert(goods1.name); // apple

三.  在全局作用域中使用时,this就指向全局对象window。

var name='apple';

alert(this.name); //apple

alert(window.name); //apple

alert(this===window); //true

四.  使用函数的call或者apply方法将this指向其他的作用域,可以重新定义函数的执行环境,即this的指向。

var obj1 = {

    name: 'Tom', 

    getName: function() { 

        return this.name 

    }  

 var obj2 = { 

    name : 'Jack' 

 } 

console.log(obj1.getName()) ;//Tom

console.log(obj1.getName.call(obj2)) //Jack

五.  当函数作为方法调用时,this指向全局对象window。

var name = 'apple'

function goodsName() {

    return this.name

}

console.log(goodsName()); // apple

六.  setTimeout中延迟所执行函数中的this,永远指向window


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

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,932评论 2 17
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,374评论 0 3
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,120评论 1 10
  • JavaScript(面向对象+原型理解+继承+作用域链和闭包+this使用总结) 一、面向对象 1、什么是面向对...
    老头子_d0ec阅读 306评论 0 0
  • 参考《JavaScript设计模式与开发实践》 this 跟别的语言大相径庭的是,JavaScript的this总...
    16manman阅读 584评论 0 0