当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

this关键字的作用范围

发表于: 2014-10-30   作者:dearls   来源:转载   浏览次数:
摘要: 一个function, 从语法的角度讲,既可以使用括号让其执行,也可以new它,比如 fucntion a(){} var b = a(); var c = new a(); 对 于c来说,a方法同样会执行,需要注意的是,如果a方法有return语句,那么b和c的值都是这个被return的东西;如果a方法根本没有任何 reutrn,那么b的值是undefined,对于c来说,a方法等同于最

一个function, 从语法的角度讲,既可以使用括号让其执行,也可以new它,比如

fucntion a(){}

var b = a();

var c = new a();

对 于c来说,a方法同样会执行,需要注意的是,如果a方法有return语句,那么b和c的值都是这个被return的东西;如果a方法根本没有任何 reutrn,那么b的值是undefined,对于c来说,a方法等同于最后会被默认加上一个retrun this,所以c会拿到一个对象。

 

再看另一个方法,

function a() {
    console.log(this);
    this.prototype.test = function(){
        console.log(this);
    }
    this.id=1;
}

如果直接用a()来运行它,等价于window.a();所以打印出来的this就是window,this.id也会给window添加一个id属性并赋值;prototype的那三行会给window对象添加一个叫做test的方法。

 

如果用var b = new a()来运行它,new会产生一个新的this,所以打印出来的就是一个空的a对象;

b.test()会让test方法执行,打印的是一个带有test方法的a对象。

 

---------------------------------------------------------

需要额外注意的是,JS在需要定义callback方法的时候,callback方法默认的执行域是window,所以callback中的this就是window。如果还想使用callback定义的时候的作用于,就要用一个变量来寄存当时的this,比如:

function a() {
    this.test = function(){
        var me = this;
        setTimeout(function(){
            console.log(me);
        },1000);
    }
}

this关键字的作用范围

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
static可以用来定义静态成员变量、静态函数、静态代码块。 静态成员变量的语法特点 定义方法:在成
Asp.Net MVC Filter 实现方式和作用范围控制 MVC中的Filte 简单又优雅的实现了AOP ,在日志,权限,
ruby中变量的作用范围有3种 1. Class definitions 2. Modle definitions 3. Method 当程序从一个cla
1、使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型。 声明为st
MVC中的Filte 简单又优雅的实现了AOP ,在日志,权限,缓存和异常处理等方面用的比较多。但本文不是
package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; imp
今天使用到了volatile关键字,之前了解到这个关键字,但是不知道他的具体作用是什么,下面就来详细
今天使用到了volatile关键字,之前了解到这个关键字,但是不知道他的具体作用是什么,下面就来详细
今天使用到了volatile关键字,之前了解到这个关键字,但是不知道他的具体作用是什么,下面就来详细
Java语言支持多线程,为了解决线程并发的问题,在语言内部引入了同步块synchronized和volatile关键
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号