当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

javascript this指向

发表于: 2015-11-13   作者:互联网   来源:转载   浏览次数:
摘要: this对象是什么:   this对象是与运行时函数执行的上下文绑定的。这句话其实已经很好的解释了this对象,为我们确定this指明了方向!但是需要注意的是:由于javascript具有动态性(解释执行,当然也有简单的预编译过程),this对象只有运行时才能够确定! 确定this对象的方法: 当函数为全局函数时,this指向window;当函数作为某个对象的方法被调用时,this指向那个对

this对象是什么:

  this对象是与运行时函数执行的上下文绑定的。这句话其实已经很好的解释了this对象,为我们确定this指明了方向!但是需要注意的是:由于javascript具有动态性(解释执行,当然也有简单的预编译过程),this对象只有运行时才能够确定!

确定this对象的方法:

当函数为全局函数时,this指向window;当函数作为某个对象的方法被调用时,this指向那个对象。特别需要注意的是,在非严格模式下匿名函数的执行上下文具有全局性,其中的this指向window,而严格模式this为空。

案例:

看不懂没有关系,下面讲解一下实例:

1.先来点简单的

/*全局当中的this*/

console.log(this); //window

/*全局函数中的this*/

function fn(){  

    console.log(this); //window

}

fn();

/*对象当中方法的this*/

var obj = {

    name : '复读机',

    getThis : function(){

        console.log(this); 

    }

}
obj.getThis()//obj 此函数作为obj的方法被调用
var getThis1 = obj.getThis;
getThis1();//window 此函数不是作为obj方法被调用,可以看做是全局函数

2.闭包与this

/*闭包与this*/

var obj = {

    name : '复读机',

    getThis : function(){

        return function(){

            console.log(this); //window

        }

    }

}

obj.getThis()();

还是简单解释一下:在这个例子中this的指向为运行时this所在的执行上下文,很明显this的上下文为一个匿名函数,这个匿名函数不是属于obj的方法,它具有全局性,所以this指向window

3.类与this

/*类与this*/

function CreateDog(name,age){

    this.name = name;

    this.age = age;

    console.log(this); //指向实例

}

CreateDog.prototype.sayThis = function(){

    console.log(this); //指向实例

}

var dog = new CreateDog("xiaohei",1);

dog.sayThis();

很多人误认为this指向类,然而this指向实例,这一点是毋庸置疑滴!

最后,关于this的有很多,需要在实践中慢慢体会!

 

javascript this指向

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前言 之所以会有此篇文章当然还要从最近的一次面试说起,很抱歉居然又扯到面试上去看,其实不要说,
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续
在程序的时候往往会看到在父类的一个函数中用到"this",我们知道this指向当前的这个对象,具体点就是
建立指向Oracle的连接 (转自:http://www.cnblogs.com/1-2-3/articles/sql-link-oracle.html) 假
指向常量的指针定义了一个指向常量的指针变量。用const char *去定义一个指向常量的指针变量,然后
例如: 有以下2个类 public class Father { public int age = 70; public static string name = "父
前几天将自己的一个网站(www.souapp.com)搜应用网,顺利上线;既然网站上线就需要在搜索引擎上推广
虽然iPAD至今没有在大陆市场官方上市,在美国却因为大陆采购量太大引起了争议,甚至有传闻Apple专卖
虽然iPAD至今没有在大陆市场官方上市,在美国却因为大陆采购量太大引起了争议,甚至有传闻Apple专卖
指针数组 定义: 如果一个 数组,其元素均为指针型数据,该数组为指针数组,也就是说,指针数组中的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号